home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / FASTCOMPTA / Setup FASTCOMPTA.exe / {app} / createbase.sql next >
Text File  |  2006-12-20  |  66KB  |  3,046 lines

  1. SET SQL DIALECT 3;
  2.  
  3. DECLARE EXTERNAL FUNCTION ABS
  4. DOUBLE PRECISION
  5. RETURNS DOUBLE PRECISION BY VALUE 
  6. ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';
  7.  
  8.  
  9. DECLARE EXTERNAL FUNCTION ASCII_CHAR
  10. INTEGER
  11. RETURNS CSTRING(1) CHARACTER SET NONE FREE_IT
  12. ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf';
  13.  
  14.  
  15. DECLARE EXTERNAL FUNCTION ASCII_VAL
  16. CHAR(1) CHARACTER SET NONE
  17. RETURNS INTEGER BY VALUE 
  18. ENTRY_POINT 'IB_UDF_ascii_val' MODULE_NAME 'ib_udf';
  19.  
  20.  
  21. DECLARE EXTERNAL FUNCTION STRLEN
  22. CSTRING(32767) CHARACTER SET NONE
  23. RETURNS INTEGER BY VALUE 
  24. ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';
  25.  
  26.  
  27. DECLARE EXTERNAL FUNCTION SUBSTR
  28. CSTRING(80) CHARACTER SET NONE, SMALLINT, SMALLINT
  29. RETURNS CSTRING(80) CHARACTER SET NONE FREE_IT
  30. ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
  31.  
  32.  
  33. DECLARE EXTERNAL FUNCTION SUBSTRLEN
  34. CSTRING(32000) CHARACTER SET NONE, SMALLINT, SMALLINT
  35. RETURNS CSTRING(255) CHARACTER SET NONE FREE_IT
  36. ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf';
  37.  
  38.  
  39. /* Domain definitions */
  40. CREATE DOMAIN "T_BOOLEAN" AS SMALLINT
  41.      DEFAULT 0;
  42. CREATE DOMAIN "T_COEFF" AS DECIMAL(5, 3);
  43. CREATE DOMAIN "T_EURO" AS DECIMAL(12, 2);
  44. CREATE DOMAIN "T_SENS" AS CHAR(1)
  45.      DEFAULT 'D'
  46.      CHECK (VALUE IN ('D','C'));
  47.  
  48. /* Table: BLOBS, Owner: SYSDBA */
  49.  
  50. CREATE TABLE "BLOBS" 
  51. (
  52.   "INDX"    INTEGER NOT NULL,
  53.   "BINAIRE"    BLOB SUB_TYPE 0 SEGMENT SIZE 80,
  54.  PRIMARY KEY ("INDX")
  55. );
  56.  
  57. /* Table: COMPTES, Owner: SYSDBA */
  58.  
  59. CREATE TABLE "COMPTES" 
  60. (
  61.   "INDX"    INTEGER NOT NULL,
  62.   "LIB_COURT"    VARCHAR(15),
  63.   "LIB_LONG"    VARCHAR(80),
  64.   "INDX_TIERS"    INTEGER,
  65.   "REGROUPEMENT"    INTEGER,
  66.   "INDX_TVA"    SMALLINT,
  67.   "VERROU"    "T_BOOLEAN",
  68.   "CONTREPARTIE"    INTEGER,
  69.  PRIMARY KEY ("INDX")
  70. );
  71.  
  72. /* Table: COMPTEUR, Owner: SYSDBA */
  73.  
  74. CREATE TABLE "COMPTEUR" 
  75. (
  76.   "INDX_EXERCICE"    INTEGER NOT NULL,
  77.   "INDX_JOURNAL"    INTEGER,
  78.   "PREFIXE"    VARCHAR(5),
  79.   "SUFFIXE"    VARCHAR(5),
  80.   "INCREMENT"    SMALLINT DEFAULT 2
  81. );
  82.  
  83. /* Table: ETATS, Owner: SYSDBA */
  84.  
  85. CREATE TABLE "ETATS" 
  86. (
  87.   "INDX"    INTEGER NOT NULL,
  88.   "NOM"    VARCHAR(200),
  89.   "FRF"    BLOB SUB_TYPE 0 SEGMENT SIZE 80,
  90.   "NOFONCTION"    SMALLINT,
  91.  PRIMARY KEY ("INDX")
  92. );
  93.  
  94. /* Table: EXERCICE, Owner: SYSDBA */
  95.  
  96. CREATE TABLE "EXERCICE" 
  97. (
  98.   "INDX"    SMALLINT NOT NULL,
  99.   "DATEDEB"    DATE,
  100.   "DATEFIN"    DATE,
  101.   "DESIGNATION"    VARCHAR(40),
  102.   "CLOS"    "T_BOOLEAN",
  103.   "DATE_CLOTURE"    DATE,
  104.   "MVT_A_NOUVEAU"    INTEGER,
  105.   "MVT_401"    INTEGER,
  106.   "MVT_411"    INTEGER,
  107.  PRIMARY KEY ("INDX")
  108. );
  109.  
  110. /* Table: JOURNAL, Owner: SYSDBA */
  111.  
  112. CREATE TABLE "JOURNAL" 
  113. (
  114.   "INDX"    SMALLINT NOT NULL,
  115.   "SHORTDESI"    VARCHAR(4),
  116.   "LONGDESI"    VARCHAR(80),
  117.   "TYPEJX"    SMALLINT,
  118.   "NUMEROTATION"    SMALLINT,
  119.   "INDX_COMPTE"    INTEGER,
  120.  PRIMARY KEY ("INDX")
  121. );
  122.  
  123. /* Table: JOURNAL_MOIS, Owner: SYSDBA */
  124.  
  125. CREATE TABLE "JOURNAL_MOIS" 
  126. (
  127.   "INDX"    SMALLINT NOT NULL,
  128.   "INDX_EXERCICE"    SMALLINT NOT NULL,
  129.   "INDX_JOURNAL"    SMALLINT NOT NULL,
  130.   "NOMOIS"    SMALLINT,
  131.   "MOIS"    SMALLINT,
  132.   "SOLDE_COMPTE"    "T_EURO",
  133.   "DATE_PRN"    DATE,
  134.   "DATE_CLOTURE"    DATE,
  135.  PRIMARY KEY ("INDX")
  136. );
  137.  
  138. /* Table: LIGNES, Owner: SYSDBA */
  139.  
  140. CREATE TABLE "LIGNES" 
  141. (
  142.   "INDX_MVT"    INTEGER NOT NULL,
  143.   "LIGNE"    SMALLINT NOT NULL,
  144.   "INDXE"    SMALLINT,
  145.   "INDX_CPT"    INTEGER NOT NULL,
  146.   "INDX_RGP"    INTEGER,
  147.   "LIBELLE"    VARCHAR(80),
  148.   "MONTANT"    "T_EURO",
  149.   "SENS"    "T_SENS",
  150.   "LETTRAGE"    VARCHAR(4),
  151.  PRIMARY KEY ("INDX_MVT", "LIGNE")
  152. );
  153.  
  154. /* Table: LISTE, Owner: SYSDBA */
  155.  
  156. CREATE TABLE "LISTE" 
  157. (
  158.   "NOLISTE"    INTEGER,
  159.   "INDX"    INTEGER,
  160.   "NOLIGNE"    SMALLINT
  161. );
  162.  
  163. /* Table: MODELES, Owner: SYSDBA */
  164.  
  165. CREATE TABLE "MODELES" 
  166. (
  167.   "INDX"    SMALLINT NOT NULL,
  168.   "INDX_BLOB"    INTEGER NOT NULL,
  169.   "DESIGNATION"    VARCHAR(80),
  170.   "SHORTKEY"    INTEGER,
  171.   "ISLETTRAGE"    "T_BOOLEAN",
  172.  PRIMARY KEY ("INDX")
  173. );
  174.  
  175. /* Table: MOUVEMENTS, Owner: SYSDBA */
  176.  
  177. CREATE TABLE "MOUVEMENTS" 
  178. (
  179.   "INDX"    INTEGER NOT NULL,
  180.   "INDX_EXERCICE"    SMALLINT,
  181.   "INDX_JOURNAL_M"    SMALLINT,
  182.   "DATE_MVT"    DATE,
  183.   "NO_INTERNE"    VARCHAR(15),
  184.   "NO_EXTERNE"    VARCHAR(15),
  185.   "VERROU"    "T_BOOLEAN",
  186.   "PRINTED"    "T_BOOLEAN",
  187.   "IMPAIRE"    "T_BOOLEAN",
  188.   "SOLDE_PROG"    "T_EURO",
  189.   "DATE_CLOTURE"    DATE,
  190.   "DATE_PONT"    TIMESTAMP,
  191.   "DATE_MODIF"    TIMESTAMP DEFAULT 'NOW',
  192.  PRIMARY KEY ("INDX")
  193. );
  194.  
  195. /* Table: PREFERENCES, Owner: SYSDBA */
  196.  
  197. CREATE TABLE "PREFERENCES" 
  198. (
  199.   "TYPEPREF"    SMALLINT,
  200.   "VALEUR"    INTEGER,
  201.   "INDX"    INTEGER
  202. );
  203.  
  204. /* Table: TIERS, Owner: SYSDBA */
  205.  
  206. CREATE TABLE "TIERS" 
  207. (
  208.   "INDX"    INTEGER NOT NULL,
  209.   "CODEMAGASIN"    VARCHAR(15),
  210.   "NOM"    VARCHAR(60),
  211.   "ADRESSE"    VARCHAR(26),
  212.   "ADRESSE2"    VARCHAR(26),
  213.   "LOCALITE"    VARCHAR(21),
  214.   "CODEPOSTAL"    VARCHAR(8),
  215.   "VILLE"    VARCHAR(22),
  216.   "PAYS"    VARCHAR(26),
  217.   "TELEPHONE"    VARCHAR(15),
  218.   "TELECOPIE"    VARCHAR(15),
  219.   "GSM"    VARCHAR(15),
  220.   "WWW"    VARCHAR(80),
  221.   "EMAIL"    VARCHAR(80),
  222.   "CONTACT"    VARCHAR(80),
  223.   "NOMBANQUE"    VARCHAR(20),
  224.   "RIBBANQUE"    VARCHAR(5),
  225.   "RIBGUICHET"    VARCHAR(5),
  226.   "RIBCOMPTE"    VARCHAR(12),
  227.   "RIBCLE"    VARCHAR(2),
  228.   "COMPTGENE"    VARCHAR(13),
  229.   "COMPTAUXI"    VARCHAR(13),
  230.   "NIFCEE"    VARCHAR(14),
  231.   "SECTEUR"    SMALLINT,
  232.   "DATECREATION"    DATE DEFAULT 'NOW',
  233.   "DATEMODIF"    DATE,
  234.   "ENCOURS"    "T_EURO",
  235.   "PLAFOND"    "T_EURO",
  236.   "ACOMPTE"    "T_EURO",
  237.   "AVOIR"    "T_EURO",
  238.   "TYPEREG"    SMALLINT DEFAULT 0,
  239.   "APE"    VARCHAR(4),
  240.   "SIRET"    VARCHAR(18),
  241.   "CBNUM"    VARCHAR(20),
  242.   "CBVALIDE"    VARCHAR(8),
  243.   "CBPORTEUR"    VARCHAR(35),
  244.  PRIMARY KEY ("INDX")
  245. );
  246.  
  247. /* Table: TVA, Owner: SYSDBA */
  248.  
  249. CREATE TABLE "TVA" 
  250. (
  251.   "INDX"    SMALLINT NOT NULL,
  252.   "DESIGNATION"    VARCHAR(40),
  253.   "VALEUR"    DECIMAL(4, 2),
  254.  PRIMARY KEY ("INDX")
  255. );
  256.  
  257. /*  Index definitions for all user tables */
  258.  
  259. CREATE INDEX "LIGNES_IDX1" ON "LIGNES"("INDX_CPT");
  260. CREATE INDEX "LIGNES_IDX2" ON "LIGNES"("LETTRAGE");
  261. CREATE INDEX "LIGNES_IDX3" ON "LIGNES"("INDXE");
  262. ALTER TABLE "COMPTEUR" ADD FOREIGN KEY ("INDX_EXERCICE") REFERENCES "EXERCICE" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  263. ALTER TABLE "COMPTEUR" ADD FOREIGN KEY ("INDX_EXERCICE") REFERENCES "EXERCICE" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  264. ALTER TABLE "JOURNAL_MOIS" ADD FOREIGN KEY ("INDX_EXERCICE") REFERENCES "EXERCICE" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  265. ALTER TABLE "JOURNAL_MOIS" ADD FOREIGN KEY ("INDX_JOURNAL") REFERENCES "JOURNAL" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  266. ALTER TABLE "JOURNAL_MOIS" ADD FOREIGN KEY ("INDX_EXERCICE") REFERENCES "EXERCICE" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  267. ALTER TABLE "JOURNAL_MOIS" ADD FOREIGN KEY ("INDX_JOURNAL") REFERENCES "JOURNAL" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  268. ALTER TABLE "LIGNES" ADD CONSTRAINT "FK_LIGNES_1" FOREIGN KEY ("INDXE") REFERENCES "EXERCICE" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  269. ALTER TABLE "LIGNES" ADD FOREIGN KEY ("INDX_MVT") REFERENCES "MOUVEMENTS" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  270. ALTER TABLE "MOUVEMENTS" ADD FOREIGN KEY ("INDX_EXERCICE") REFERENCES "EXERCICE" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  271. ALTER TABLE "MOUVEMENTS" ADD FOREIGN KEY ("INDX_JOURNAL_M") REFERENCES "JOURNAL_MOIS" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  272. ALTER TABLE "MOUVEMENTS" ADD FOREIGN KEY ("INDX_EXERCICE") REFERENCES "EXERCICE" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  273. ALTER TABLE "MOUVEMENTS" ADD FOREIGN KEY ("INDX_JOURNAL_M") REFERENCES "JOURNAL_MOIS" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  274.  
  275. CREATE GENERATOR "GENPK_BLOBS";
  276. CREATE GENERATOR "GENPK_COMPTES";
  277. CREATE GENERATOR "GENPK_ETATS";
  278. CREATE GENERATOR "GENPK_EXERCICE";
  279. CREATE GENERATOR "GENPK_JOURNAL";
  280. CREATE GENERATOR "GENPK_JOURNAL_MOIS";
  281. CREATE GENERATOR "GENPK_MODELES";
  282. CREATE GENERATOR "GENPK_MOUVEMENTS";
  283. CREATE GENERATOR "GENPK_TIERS";
  284. CREATE GENERATOR "GENPK_TVA";
  285. CREATE GENERATOR "GEN_1";
  286. CREATE GENERATOR "GEN_1_1";
  287. CREATE GENERATOR "GEN_1_2";
  288. CREATE GENERATOR "GEN_1_6";
  289. CREATE GENERATOR "NOLISTE";
  290. CREATE GENERATOR "VERSION_BASE";
  291. ALTER TABLE "JOURNAL_MOIS" ADD
  292. CHECK ("MOIS" BETWEEN 1 AND 12);
  293.  
  294. ALTER TABLE "JOURNAL_MOIS" ADD
  295. CHECK ("MOIS" BETWEEN 1 AND 12);
  296.  
  297.  
  298. /*  Exceptions */
  299.  
  300. CREATE EXCEPTION "DEL_VERROU" 'Ce mouvement est verrouillΘ. Effacement impossible';
  301. CREATE EXCEPTION "MAJ_VERROU" 'Ce mouvement est verrouillΘ. Mise α jour impossible';
  302. CREATE EXCEPTION "OUT_OF_LETTRES" 'Plus de lettrage disponible !!!';
  303. COMMIT WORK;
  304. SET AUTODDL OFF;
  305.  
  306. /* Stored procedures */
  307.  
  308. CREATE PROCEDURE "ALL_SOLDE_COMPTE" 
  309. (
  310.   "EXERCICE" SMALLINT
  311. )
  312. RETURNS
  313. (
  314.   "INDX_JOURNAL_MOIS" SMALLINT,
  315.   "INDEX_COMPTE" INTEGER,
  316.   "CREDIT" DECIMAL(12, 2),
  317.   "DEBIT" DECIMAL(12, 2)
  318. )
  319. AS
  320. BEGIN EXIT; END ;
  321.  
  322. CREATE PROCEDURE "A_NOUVEAU_COMPTE" 
  323. (
  324.   "INDEX_EXERCICE" SMALLINT,
  325.   "INDEX_COMPTE" INTEGER
  326. )
  327. RETURNS
  328. (
  329.   "CREDIT" DECIMAL(12, 2),
  330.   "DEBIT" DECIMAL(12, 2)
  331. )
  332. AS
  333. BEGIN EXIT; END ;
  334.  
  335. CREATE PROCEDURE "BALANCE_DES_COMPTES" 
  336. (
  337.   "INDX_EXERCICE" SMALLINT,
  338.   "AVEC_TOTAUX" SMALLINT,
  339.   "AVEC_TIERS" SMALLINT
  340. )
  341. RETURNS
  342. (
  343.   "INDX" INTEGER,
  344.   "COMPTE" VARCHAR(15),
  345.   "TIERS" VARCHAR(15),
  346.   "DESCRIPTION" VARCHAR(80),
  347.   "DEBIT" DECIMAL(12, 2),
  348.   "CREDIT" DECIMAL(12, 2),
  349.   "SOLDED" DECIMAL(12, 2),
  350.   "SOLDEC" DECIMAL(12, 2)
  351. )
  352. AS
  353. BEGIN EXIT; END ;
  354.  
  355. CREATE PROCEDURE "BALANCE_UN_COMPTE" 
  356. (
  357.   "INDX_EXERCICE" SMALLINT,
  358.   "INDX_CPT" INTEGER
  359. )
  360. RETURNS
  361. (
  362.   "DEBIT" DECIMAL(12, 2),
  363.   "CREDIT" DECIMAL(12, 2)
  364. )
  365. AS
  366. BEGIN EXIT; END ;
  367.  
  368. CREATE PROCEDURE "CALCUL_VERROU_COMPTES" 
  369. AS
  370. BEGIN EXIT; END ;
  371.  
  372. CREATE PROCEDURE "CALCUL_VERROU_UN_COMPTE" 
  373. (
  374.   "INDEX_CPT" INTEGER
  375. )
  376. RETURNS
  377. (
  378.   "VERROU" INTEGER
  379. )
  380. AS
  381. BEGIN EXIT; END ;
  382.  
  383. CREATE PROCEDURE "CHECK_GENPK" 
  384. RETURNS
  385. (
  386.   "INFO" VARCHAR(50)
  387. )
  388. AS
  389. BEGIN EXIT; END ;
  390.  
  391. CREATE PROCEDURE "COPIE_LETTRAGE" 
  392. (
  393.   "MVT_1" INTEGER
  394. )
  395. RETURNS
  396. (
  397.   "INFO" VARCHAR(80)
  398. )
  399. AS
  400. BEGIN EXIT; END ;
  401.  
  402. CREATE PROCEDURE "EFFACE_MODELE" 
  403. (
  404.   "INDEX_MODELE" SMALLINT
  405. )
  406. AS
  407. BEGIN EXIT; END ;
  408.  
  409. CREATE PROCEDURE "EFF_COMPTE" 
  410. (
  411.   "INDEX_CPT" INTEGER
  412. )
  413. RETURNS
  414. (
  415.   "EFF_OK" SMALLINT
  416. )
  417. AS
  418. BEGIN EXIT; END ;
  419.  
  420. CREATE PROCEDURE "EFF_COMPTE_OK" 
  421. (
  422.   "INDEX_CPT" INTEGER
  423. )
  424. RETURNS
  425. (
  426.   "EFF_OK" SMALLINT
  427. )
  428. AS
  429. BEGIN EXIT; END ;
  430.  
  431. CREATE PROCEDURE "EFF_EXERCICE_OK" 
  432. (
  433.   "INDEX_E" SMALLINT
  434. )
  435. RETURNS
  436. (
  437.   "EFF_OK" SMALLINT
  438. )
  439. AS
  440. BEGIN EXIT; END ;
  441.  
  442. CREATE PROCEDURE "EFF_JOURNAL_MOIS" 
  443. (
  444.   "INDEX_JM" SMALLINT
  445. )
  446. RETURNS
  447. (
  448.   "EFF_OK" SMALLINT
  449. )
  450. AS
  451. BEGIN EXIT; END ;
  452.  
  453. CREATE PROCEDURE "EFF_JOURNAL_MOIS_OK" 
  454. (
  455.   "INDEX_JM" SMALLINT
  456. )
  457. RETURNS
  458. (
  459.   "EFF_OK" SMALLINT
  460. )
  461. AS
  462. BEGIN EXIT; END ;
  463.  
  464. CREATE PROCEDURE "EFF_JOURNAL_OK" 
  465. (
  466.   "INDEX_J" SMALLINT
  467. )
  468. RETURNS
  469. (
  470.   "EFF_OK" SMALLINT
  471. )
  472. AS
  473. BEGIN EXIT; END ;
  474.  
  475. CREATE PROCEDURE "EFF_LISTE_COMPTE_OK" 
  476. (
  477.   "NOLISTE" INTEGER
  478. )
  479. RETURNS
  480. (
  481.   "EFF_OK" SMALLINT
  482. )
  483. AS
  484. BEGIN EXIT; END ;
  485.  
  486. CREATE PROCEDURE "EFF_MOUVEMENT" 
  487. (
  488.   "INDEX_MVT" INTEGER
  489. )
  490. RETURNS
  491. (
  492.   "EFF_OK" SMALLINT
  493. )
  494. AS
  495. BEGIN EXIT; END ;
  496.  
  497. CREATE PROCEDURE "EXPORT_ADRESSE" 
  498. (
  499.   "INDX" INTEGER
  500. )
  501. RETURNS
  502. (
  503.   "RESULT" VARCHAR(30)
  504. )
  505. AS
  506. BEGIN EXIT; END ;
  507.  
  508. CREATE PROCEDURE "EXPORT_COMPTE" 
  509. (
  510.   "INDX_C" INTEGER
  511. )
  512. RETURNS
  513. (
  514.   "RESULT" VARCHAR(90)
  515. )
  516. AS
  517. BEGIN EXIT; END ;
  518.  
  519. CREATE PROCEDURE "EXPORT_COMPTES" 
  520. (
  521.   "NOLISTE" INTEGER
  522. )
  523. RETURNS
  524. (
  525.   "RESULT" VARCHAR(250)
  526. )
  527. AS
  528. BEGIN EXIT; END ;
  529.  
  530. CREATE PROCEDURE "EXPORT_TIERS" 
  531. (
  532.   "INDX" INTEGER
  533. )
  534. RETURNS
  535. (
  536.   "RESULT" VARCHAR(250)
  537. )
  538. AS
  539. BEGIN EXIT; END ;
  540.  
  541. CREATE PROCEDURE "EXPORT_TVA" 
  542. (
  543.   "INDX" INTEGER
  544. )
  545. RETURNS
  546. (
  547.   "RESULT" VARCHAR(250)
  548. )
  549. AS
  550. BEGIN EXIT; END ;
  551.  
  552. CREATE PROCEDURE "EXTRAIT_COMPTE" 
  553. (
  554.   "INDX_CPT" INTEGER,
  555.   "INDX_EXERCICE" SMALLINT,
  556.   "LETTRE" SMALLINT,
  557.   "NON_LETTRE" SMALLINT
  558. )
  559. RETURNS
  560. (
  561.   "DATE_MVT" DATE,
  562.   "CODEJ" VARCHAR(4),
  563.   "NO_INTERNE" VARCHAR(15),
  564.   "NO_EXTERNE" VARCHAR(15),
  565.   "LIBELLE" VARCHAR(80),
  566.   "LETTRAGE" VARCHAR(4),
  567.   "DEBIT" DECIMAL(12, 2),
  568.   "CREDIT" DECIMAL(12, 2),
  569.   "SOLDEP" DECIMAL(12, 2)
  570. )
  571. AS
  572. BEGIN EXIT; END ;
  573.  
  574. CREATE PROCEDURE "GET_INDEXS_COMPTE" 
  575. (
  576.   "LIB_CG" VARCHAR(15),
  577.   "LIB_CA" VARCHAR(15)
  578. )
  579. RETURNS
  580. (
  581.   "INDX_CG" VARCHAR(15),
  582.   "INDX_CA" VARCHAR(15)
  583. )
  584. AS
  585. BEGIN EXIT; END ;
  586.  
  587. CREATE PROCEDURE "GET_INDEX_JM" 
  588. (
  589.   "DESI" VARCHAR(4),
  590.   "MOIS" SMALLINT,
  591.   "INDX_EXERCICE" SMALLINT
  592. )
  593. RETURNS
  594. (
  595.   "INDX" INTEGER
  596. )
  597. AS
  598. BEGIN EXIT; END ;
  599.  
  600. CREATE PROCEDURE "GET_INDX_COMPTE" 
  601. (
  602.   "LIB_CG" VARCHAR(15),
  603.   "LIB_CA" VARCHAR(15)
  604. )
  605. RETURNS
  606. (
  607.   "INDX" INTEGER
  608. )
  609. AS
  610. BEGIN EXIT; END ;
  611.  
  612. CREATE PROCEDURE "GET_LETTRAGE" 
  613. (
  614.   "INDX_CPT" INTEGER,
  615.   "INDX_E" INTEGER
  616. )
  617. RETURNS
  618. (
  619.   "LETTRAGE" VARCHAR(4)
  620. )
  621. AS
  622. BEGIN EXIT; END ;
  623.  
  624. CREATE PROCEDURE "GET_LIB_COURTS" 
  625. (
  626.   "INDX" INTEGER
  627. )
  628. RETURNS
  629. (
  630.   "LIBGENE" VARCHAR(15),
  631.   "LIBAUXI" VARCHAR(15)
  632. )
  633. AS
  634. BEGIN EXIT; END ;
  635.  
  636. CREATE PROCEDURE "GET_NEXT_LETTRAGE" 
  637. (
  638.   "LETTRAGE" VARCHAR(4)
  639. )
  640. RETURNS
  641. (
  642.   "RESULT" VARCHAR(4)
  643. )
  644. AS
  645. BEGIN EXIT; END ;
  646.  
  647. CREATE PROCEDURE "GET_NOM_COMPTE" 
  648. (
  649.   "INDX" INTEGER
  650. )
  651. RETURNS
  652. (
  653.   "NOM" VARCHAR(250)
  654. )
  655. AS
  656. BEGIN EXIT; END ;
  657.  
  658. CREATE PROCEDURE "GET_NOM_COMPTE_GENERAL" 
  659. (
  660.   "INDX" INTEGER
  661. )
  662. RETURNS
  663. (
  664.   "LIBELLE" VARCHAR(15)
  665. )
  666. AS
  667. BEGIN EXIT; END ;
  668.  
  669. CREATE PROCEDURE "GET_REPORT_JM_COMPTE" 
  670. (
  671.   "INDEX_JM" SMALLINT
  672. )
  673. RETURNS
  674. (
  675.   "CREDIT" DECIMAL(12, 2),
  676.   "DEBIT" DECIMAL(12, 2)
  677. )
  678. AS
  679. BEGIN EXIT; END ;
  680.  
  681. CREATE PROCEDURE "GET_SOLDE_JOURNAL" 
  682. (
  683.   "INDEX_JM" SMALLINT
  684. )
  685. RETURNS
  686. (
  687.   "MONTANT" DECIMAL(12, 2)
  688. )
  689. AS
  690. BEGIN EXIT; END ;
  691.  
  692. CREATE PROCEDURE "GRAND_LIVRE" 
  693. (
  694.   "INDX_EXERCICE" SMALLINT,
  695.   "INDEX_CPT" INTEGER,
  696.   "AVEC_TIERS" SMALLINT,
  697.   "QUE_LETTRE" SMALLINT,
  698.   "QUE_NON_LETTRE" SMALLINT
  699. )
  700. RETURNS
  701. (
  702.   "INDX" INTEGER,
  703.   "DATE_MVT" DATE,
  704.   "CODEJ" VARCHAR(4),
  705.   "NO_INTERNE" VARCHAR(15),
  706.   "NO_EXTERNE" VARCHAR(15),
  707.   "LIBELLE" VARCHAR(80),
  708.   "LETTRAGE" VARCHAR(4),
  709.   "DEBIT" DECIMAL(12, 2),
  710.   "CREDIT" DECIMAL(12, 2),
  711.   "SOLDEP" DECIMAL(12, 2),
  712.   "LIB_GENE" VARCHAR(15),
  713.   "LIB_AUXI" VARCHAR(15)
  714. )
  715. AS
  716. BEGIN EXIT; END ;
  717.  
  718. CREATE PROCEDURE "IMPORT_COMPTE" 
  719. (
  720.   "LIB_COURT" VARCHAR(15),
  721.   "LIB_LONG" VARCHAR(80),
  722.   "CODEMAGASIN" VARCHAR(15),
  723.   "REGROUPEMENT" VARCHAR(15),
  724.   "VALEUR_TVA" VARCHAR(6)
  725. )
  726. AS
  727. BEGIN EXIT; END ;
  728.  
  729. CREATE PROCEDURE "IMPORT_TVA" 
  730. (
  731.   "DESIGNATION" VARCHAR(40),
  732.   "VALEUR" DECIMAL(4, 2)
  733. )
  734. AS
  735. BEGIN EXIT; END ;
  736.  
  737. CREATE PROCEDURE "INTERROGATION" 
  738. (
  739.   "INDEX_EXERCICE" INTEGER,
  740.   "DATEDEB" DATE,
  741.   "DATEFIN" DATE,
  742.   "DETAILS" SMALLINT
  743. )
  744. RETURNS
  745. (
  746.   "LIBJOURNAL" VARCHAR(4),
  747.   "NO_INTERNE" VARCHAR(15),
  748.   "DATE_MVT" DATE,
  749.   "NO_EXTERNE" VARCHAR(15),
  750.   "GENE" VARCHAR(15),
  751.   "AUXI" VARCHAR(15),
  752.   "LIBELLE" VARCHAR(80),
  753.   "LETTRAGE" VARCHAR(4),
  754.   "DEBIT" DECIMAL(12, 2),
  755.   "CREDIT" DECIMAL(12, 2),
  756.   "VERROU" SMALLINT,
  757.   "MONTANT" DECIMAL(12, 2),
  758.   "INDX_MVT" INTEGER,
  759.   "NOLIGNE" SMALLINT,
  760.   "LIB_CPT" VARCHAR(80),
  761.   "INDX_JL" SMALLINT,
  762.   "DATEPONT" DATE
  763. )
  764. AS
  765. BEGIN EXIT; END ;
  766.  
  767. CREATE PROCEDURE "INTERROGATION_CPT" 
  768. (
  769.   "INDX" INTEGER,
  770.   "INDX_EXERCICE" SMALLINT
  771. )
  772. RETURNS
  773. (
  774.   "CODEJ" VARCHAR(4),
  775.   "DATE_MVT" DATE,
  776.   "NO_INTERNE" VARCHAR(15),
  777.   "NO_EXTERNE" VARCHAR(15),
  778.   "AUXI" VARCHAR(15),
  779.   "LIBELLE" VARCHAR(80),
  780.   "LETTRAGE" VARCHAR(4),
  781.   "DEBIT" DECIMAL(12, 2),
  782.   "CREDIT" DECIMAL(12, 2),
  783.   "VERROU" SMALLINT,
  784.   "MONTANT" DECIMAL(12, 2),
  785.   "INDX_MVT" INTEGER,
  786.   "NOLIGNE" SMALLINT,
  787.   "INDX_CPT" INTEGER
  788. )
  789. AS
  790. BEGIN EXIT; END ;
  791.  
  792. CREATE PROCEDURE "INTERROGATION_JL" 
  793. (
  794.   "INDX_JM" INTEGER
  795. )
  796. RETURNS
  797. (
  798.   "NO_INTERNE" VARCHAR(15),
  799.   "DATE_MVT" DATE,
  800.   "NO_EXTERNE" VARCHAR(15),
  801.   "GENE" VARCHAR(15),
  802.   "AUXI" VARCHAR(15),
  803.   "LIBELLE" VARCHAR(80),
  804.   "LETTRAGE" VARCHAR(4),
  805.   "DEBIT" DECIMAL(12, 2),
  806.   "CREDIT" DECIMAL(12, 2),
  807.   "VERROU" SMALLINT,
  808.   "MONTANT" DECIMAL(12, 2),
  809.   "INDX_MVT" INTEGER,
  810.   "NOLIGNE" SMALLINT,
  811.   "LIB_CPT" VARCHAR(80)
  812. )
  813. AS
  814. BEGIN EXIT; END ;
  815.  
  816. CREATE PROCEDURE "INTERROGATION_LISTE" 
  817. (
  818.   "NOLISTE" INTEGER
  819. )
  820. RETURNS
  821. (
  822.   "LIBJOURNAL" VARCHAR(4),
  823.   "NO_INTERNE" VARCHAR(15),
  824.   "DATE_MVT" DATE,
  825.   "NO_EXTERNE" VARCHAR(15),
  826.   "GENE" VARCHAR(15),
  827.   "AUXI" VARCHAR(15),
  828.   "LIBELLE" VARCHAR(80),
  829.   "LETTRAGE" VARCHAR(4),
  830.   "DEBIT" DECIMAL(12, 2),
  831.   "CREDIT" DECIMAL(12, 2),
  832.   "VERROU" SMALLINT,
  833.   "MONTANT" DECIMAL(12, 2),
  834.   "INDX_MVT" INTEGER,
  835.   "NOLIGNE" SMALLINT,
  836.   "LIB_CPT" VARCHAR(80),
  837.   "INDX_JL" SMALLINT,
  838.   "DATEPONT" DATE
  839. )
  840. AS
  841. BEGIN EXIT; END ;
  842.  
  843. CREATE PROCEDURE "INTERROGATION_MVT" 
  844. (
  845.   "INDX_MVT" INTEGER
  846. )
  847. RETURNS
  848. (
  849.   "NOLIGNE" SMALLINT,
  850.   "DATE_MVT" DATE,
  851.   "NO_INTERNE" VARCHAR(15),
  852.   "NO_EXTERNE" VARCHAR(15),
  853.   "GENE" VARCHAR(15),
  854.   "AUXI" VARCHAR(15),
  855.   "LIBELLE" VARCHAR(80),
  856.   "LETTRAGE" VARCHAR(4),
  857.   "DEBIT" DECIMAL(12, 2),
  858.   "CREDIT" DECIMAL(12, 2),
  859.   "VERROU" SMALLINT,
  860.   "MONTANT" DECIMAL(12, 2)
  861. )
  862. AS
  863. BEGIN EXIT; END ;
  864.  
  865. CREATE PROCEDURE "IS_EFF_MOUVEMENT_OK" 
  866. (
  867.   "INDEX_MVT" SMALLINT
  868. )
  869. RETURNS
  870. (
  871.   "EFF_OK" SMALLINT
  872. )
  873. AS
  874. BEGIN EXIT; END ;
  875.  
  876. CREATE PROCEDURE "LISTE_COMPTES" 
  877. (
  878.   "AVEC_TIERS" SMALLINT
  879. )
  880. RETURNS
  881. (
  882.   "INDX" INTEGER,
  883.   "INDX_GENE" INTEGER,
  884.   "INDX_AUXI" INTEGER,
  885.   "COMPTE" VARCHAR(15),
  886.   "TIERS" VARCHAR(15),
  887.   "DESCRIPTION" VARCHAR(80)
  888. )
  889. AS
  890. BEGIN EXIT; END ;
  891.  
  892. CREATE PROCEDURE "LISTE_JOURNAUX_MENSUELS" 
  893. (
  894.   "INDX_E" SMALLINT,
  895.   "TYPE_LISTE" SMALLINT
  896. )
  897. RETURNS
  898. (
  899.   "INDX_JM" INTEGER,
  900.   "MOIS" SMALLINT,
  901.   "CODE_J" VARCHAR(4),
  902.   "DESI" VARCHAR(80),
  903.   "DATE_MODIF" DATE,
  904.   "MONTANT" DECIMAL(12, 2),
  905.   "DATE_PRN" DATE,
  906.   "DATE_CLOTURE" DATE,
  907.   "NBR" INTEGER,
  908.   "NOMOIS" SMALLINT
  909. )
  910. AS
  911. BEGIN EXIT; END ;
  912.  
  913. CREATE PROCEDURE "SET_IMPAIRE" 
  914. (
  915.   "NO_JOURNAL_MOIS" SMALLINT
  916. )
  917. AS
  918. BEGIN EXIT; END ;
  919.  
  920. CREATE PROCEDURE "SOLDE_JM_COMPTE" 
  921. (
  922.   "INDEX_JM" SMALLINT
  923. )
  924. RETURNS
  925. (
  926.   "INDEX_COMPTE" INTEGER,
  927.   "CREDIT" DECIMAL(12, 2),
  928.   "DEBIT" DECIMAL(12, 2)
  929. )
  930. AS
  931. BEGIN EXIT; END ;
  932.  
  933. CREATE PROCEDURE "UPDATE_DATE_CLOTURE_JM" 
  934. (
  935.   "INDX_JM" SMALLINT
  936. )
  937. AS
  938. BEGIN EXIT; END ;
  939.  
  940. CREATE PROCEDURE "VERROUILLE_JM" 
  941. (
  942.   "INDX_JM" INTEGER
  943. )
  944. AS
  945. BEGIN EXIT; END ;
  946.  
  947. CREATE PROCEDURE "VERROUILLE_MVT" 
  948. (
  949.   "INDX_MVT" INTEGER
  950. )
  951. AS
  952. BEGIN EXIT; END ;
  953.  
  954.  
  955. ALTER PROCEDURE "ALL_SOLDE_COMPTE" 
  956. (
  957.   "EXERCICE" SMALLINT
  958. )
  959. RETURNS
  960. (
  961.   "INDX_JOURNAL_MOIS" SMALLINT,
  962.   "INDEX_COMPTE" INTEGER,
  963.   "CREDIT" DECIMAL(12, 2),
  964.   "DEBIT" DECIMAL(12, 2)
  965. )
  966. AS
  967. BEGIN
  968. FOR
  969.   SELECT "INDX" FROM JOURNAL_MOIS
  970.   WHERE INDX_EXERCICE=:EXERCICE
  971.   ORDER BY INDX_JOURNAL,NOMOIS
  972.   INTO :INDX_JOURNAL_MOIS
  973.   DO
  974.     BEGIN
  975.     SELECT "INDEX_COMPTE","CREDIT","DEBIT"
  976.     FROM SOLDE_JM_COMPTE(:INDX_JOURNAL_MOIS)
  977.     INTO :INDEX_COMPTE,:CREDIT,:DEBIT;
  978.     SUSPEND;
  979.     END
  980. END
  981.  ;
  982.  
  983.  
  984. ALTER PROCEDURE "A_NOUVEAU_COMPTE" 
  985. (
  986.   "INDEX_EXERCICE" SMALLINT,
  987.   "INDEX_COMPTE" INTEGER
  988. )
  989. RETURNS
  990. (
  991.   "CREDIT" DECIMAL(12, 2),
  992.   "DEBIT" DECIMAL(12, 2)
  993. )
  994. AS
  995. BEGIN
  996. SELECT SUM(MONTANT) from LIGNES L
  997. JOIN MOUVEMENTS M ON M.INDX=L.INDX_MVT AND L.SENS='D' AND INDX_EXERCICE=:INDEX_EXERCICE
  998. JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
  999. JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL AND J.TYPEJX=4
  1000. where l.INDX_CPT=:INDEX_COMPTE INTO :DEBIT;
  1001.  
  1002. SELECT SUM(MONTANT) from LIGNES L
  1003. JOIN MOUVEMENTS M ON M.INDX=L.INDX_MVT AND L.SENS='C' AND INDX_EXERCICE=:INDEX_EXERCICE
  1004. JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
  1005. JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL AND J.TYPEJX=4
  1006. where l.INDX_CPT=:INDEX_COMPTE INTO :CREDIT;
  1007. IF (CREDIT IS NULL) THEN CREDIT=0;
  1008. IF (DEBIT IS NULL) THEN DEBIT=0;
  1009. SUSPEND;
  1010. END
  1011.  ;
  1012.  
  1013.  
  1014. ALTER PROCEDURE "BALANCE_DES_COMPTES" 
  1015. (
  1016.   "INDX_EXERCICE" SMALLINT,
  1017.   "AVEC_TOTAUX" SMALLINT,
  1018.   "AVEC_TIERS" SMALLINT
  1019. )
  1020. RETURNS
  1021. (
  1022.   "INDX" INTEGER,
  1023.   "COMPTE" VARCHAR(15),
  1024.   "TIERS" VARCHAR(15),
  1025.   "DESCRIPTION" VARCHAR(80),
  1026.   "DEBIT" DECIMAL(12, 2),
  1027.   "CREDIT" DECIMAL(12, 2),
  1028.   "SOLDED" DECIMAL(12, 2),
  1029.   "SOLDEC" DECIMAL(12, 2)
  1030. )
  1031. AS
  1032. DECLARE VARIABLE TOTC2 DECIMAL(12,2);
  1033. DECLARE VARIABLE TOTD2 DECIMAL(12,2);
  1034. DECLARE VARIABLE CLASSE6C DECIMAL(12,2);
  1035. DECLARE VARIABLE CLASSE6D DECIMAL(12,2);
  1036. DECLARE VARIABLE CLASSE7C DECIMAL(12,2);
  1037. DECLARE VARIABLE CLASSE7D DECIMAL(12,2);
  1038. begin
  1039. TOTC2 = 0;
  1040. TOTD2 = 0;
  1041. CLASSE6C = 0;
  1042. CLASSE6D = 0;
  1043. CLASSE7C = 0;
  1044. CLASSE7D = 0;
  1045.  
  1046. FOR SELECT INDX,COMPTE,TIERS,DESCRIPTION FROM LISTE_COMPTES(:AVEC_TIERS)
  1047. INTO :INDX,:COMPTE,:TIERS,:DESCRIPTION DO
  1048.   BEGIN
  1049.   if (AVEC_TIERS=1) then
  1050.     BEGIN
  1051.     SELECT SUM(MONTANT) from lignes
  1052.       where INDXE=:INDX_EXERCICE AND INDX_CPT=:INDX AND SENS='C'
  1053.       INTO :CREDIT;
  1054.     SELECT SUM(MONTANT) from lignes L
  1055.       where INDXE=:INDX_EXERCICE AND INDX_CPT=:INDX AND SENS='D'
  1056.       INTO :DEBIT;
  1057.     end
  1058.   ELSE
  1059.     BEGIN
  1060.     SELECT SUM(MONTANT) from lignes
  1061.       where INDXE=:INDX_EXERCICE AND INDX_RGP=:INDX AND SENS='C' INTO :CREDIT;
  1062.     SELECT SUM(MONTANT) from lignes
  1063.       where INDXE=:INDX_EXERCICE AND INDX_RGP=:INDX AND SENS='D' INTO :DEBIT;
  1064.     END
  1065.   if (CREDIT IS NULL) then CREDIT = 0;
  1066.   if (DEBIT IS NULL) then DEBIT = 0;
  1067.   if ((CREDIT<>0) or (DEBIT<>0) ) THEN
  1068.     BEGIN
  1069.     SOLDEC = 0;
  1070.     SOLDED = 0;
  1071.     if (SUBSTR(COMPTE,1,1)<'6') then
  1072.       BEGIN
  1073.       TOTC2 = TOTC2 + CREDIT;
  1074.       TOTD2 = TOTD2 + DEBIT;
  1075.       END
  1076.     ELSE if (SUBSTR(COMPTE,1,1)='6') then
  1077.       BEGIN
  1078.       /* Les comptes 8 sont exclus des totaux */
  1079.       CLASSE6C = CLASSE6C + CREDIT;
  1080.       CLASSE6D = CLASSE6D + DEBIT;
  1081.       END
  1082.     ELSE if (SUBSTR(COMPTE,1,1)='7') then
  1083.       BEGIN
  1084.       /* Les comptes 8 sont exclus des totaux */
  1085.       CLASSE7C = CLASSE7C + CREDIT;
  1086.       CLASSE7D = CLASSE7D + DEBIT;
  1087.       END
  1088.     IF (CREDIT>DEBIT) THEN SOLDEC = CREDIT - DEBIT;
  1089.     ELSE IF (CREDIT<DEBIT) THEN SOLDED = DEBIT - CREDIT;
  1090.     SUSPEND;
  1091.     END
  1092.   END
  1093. if (AVEC_TOTAUX=1) then
  1094.   begin
  1095.   COMPTE = NULL;
  1096.   /* Comptes de bilan */
  1097.   SOLDEC = NULL;
  1098.   SOLDED = NULL;
  1099.   INDX = -1;
  1100.   DESCRIPTION = 'Totaux comptes de bilan';
  1101.   CREDIT = TOTC2;
  1102.   DEBIT = TOTD2;
  1103.   IF (CREDIT>DEBIT) THEN SOLDEC = CREDIT - DEBIT;
  1104.   ELSE IF (CREDIT<DEBIT) THEN SOLDED = DEBIT - CREDIT;
  1105.   SUSPEND;
  1106.  
  1107.   /* Comptes de Gestion */
  1108.   SOLDEC = NULL;
  1109.   SOLDED = NULL;
  1110.   INDX = -2;
  1111.   DESCRIPTION = 'Totaux comptes de gestion';
  1112.   CREDIT = CLASSE6C + CLASSE7C;
  1113.   DEBIT = CLASSE6D + CLASSE7D;
  1114.   IF (CREDIT>DEBIT) THEN SOLDEC = CREDIT - DEBIT;
  1115.   ELSE IF (CREDIT<DEBIT) THEN SOLDED = DEBIT - CREDIT;
  1116.   SUSPEND;
  1117.  
  1118.   /* et au final */
  1119.   SOLDEC = NULL;
  1120.   SOLDED = NULL;
  1121.   INDX = -3;
  1122.   DESCRIPTION = 'Totaux de la balance';
  1123.   CREDIT = TOTC2 + CLASSE6C + CLASSE7C;
  1124.   DEBIT = TOTD2 + CLASSE6D + CLASSE7D;
  1125.   SUSPEND;
  1126.  
  1127.   /* Comptes 6 */
  1128.   SOLDEC = NULL;
  1129.   SOLDED = NULL;
  1130.   INDX = -4;
  1131.   DESCRIPTION = 'Totaux comptes Classe 6';
  1132.   CREDIT = CLASSE6C;
  1133.   DEBIT = CLASSE6D;
  1134.   IF (CREDIT>DEBIT) THEN SOLDEC = CREDIT - DEBIT;
  1135.   ELSE IF (CREDIT<DEBIT) THEN SOLDED = DEBIT - CREDIT;
  1136.   SUSPEND;
  1137.  
  1138.   /* Comptes 7 */
  1139.   SOLDEC = NULL;
  1140.   SOLDED = NULL;
  1141.   INDX = -5;
  1142.   DESCRIPTION = 'Totaux comptes Classe 7';
  1143.   CREDIT = CLASSE7C;
  1144.   DEBIT = CLASSE7D;
  1145.   IF (CREDIT>DEBIT) THEN SOLDEC = CREDIT - DEBIT;
  1146.   ELSE IF (CREDIT<DEBIT) THEN SOLDED = DEBIT - CREDIT;
  1147.   SUSPEND;
  1148.  
  1149.   /* RΘsultat */
  1150.   SOLDEC = NULL;
  1151.   SOLDED = NULL;
  1152.   INDX = -6;
  1153.   DESCRIPTION = 'RΘsultat de l''exercice';
  1154.   CREDIT = CLASSE7C + CLASSE6C;
  1155.   DEBIT = CLASSE7D + CLASSE6D;
  1156.   IF (CREDIT>DEBIT) THEN SOLDEC = CREDIT - DEBIT;
  1157.   ELSE IF (CREDIT<DEBIT) THEN SOLDED = DEBIT - CREDIT;
  1158.   SUSPEND;
  1159.   END
  1160.  
  1161. end
  1162.  ;
  1163.  
  1164.  
  1165. ALTER PROCEDURE "BALANCE_UN_COMPTE" 
  1166. (
  1167.   "INDX_EXERCICE" SMALLINT,
  1168.   "INDX_CPT" INTEGER
  1169. )
  1170. RETURNS
  1171. (
  1172.   "DEBIT" DECIMAL(12, 2),
  1173.   "CREDIT" DECIMAL(12, 2)
  1174. )
  1175. AS
  1176. begin
  1177. SELECT SUM(MONTANT) from lignes
  1178.   where INDXE=:INDX_EXERCICE AND INDX_CPT=:INDX_CPT AND SENS='C'
  1179.   INTO :CREDIT;
  1180. SELECT SUM(MONTANT) from lignes
  1181.   where INDXE=:INDX_EXERCICE AND INDX_CPT=:INDX_CPT AND SENS='D'
  1182.   INTO :DEBIT;
  1183. if (CREDIT IS NULL) then CREDIT = 0;
  1184. if (DEBIT IS NULL) then DEBIT = 0;
  1185. SUSPEND;
  1186. end
  1187.  ;
  1188.  
  1189.  
  1190. ALTER PROCEDURE "CALCUL_VERROU_COMPTES" 
  1191. AS
  1192. DECLARE VARIABLE INDX INTEGER;
  1193. BEGIN
  1194. UPDATE COMPTES SET VERROU=0;
  1195. FOR SELECT DISTINCT INDX_CPT FROM LIGNES INTO :INDX DO
  1196.     UPDATE COMPTES SET VERROU=1 WHERE INDX=:INDX;
  1197. FOR SELECT DISTINCT INDX_RGP FROM LIGNES WHERE INDX_RGP<>INDX_CPT INTO :INDX DO
  1198.     UPDATE COMPTES SET VERROU=1 WHERE INDX=:INDX;
  1199. END
  1200.  ;
  1201.  
  1202.  
  1203. ALTER PROCEDURE "CALCUL_VERROU_UN_COMPTE" 
  1204. (
  1205.   "INDEX_CPT" INTEGER
  1206. )
  1207. RETURNS
  1208. (
  1209.   "VERROU" INTEGER
  1210. )
  1211. AS
  1212. BEGIN
  1213. SELECT COUNT(*) FROM LIGNES
  1214. WHERE (INDX_CPT=:INDEX_CPT) or (INDX_RGP=:INDEX_CPT) INTO :VERROU;
  1215. SUSPEND;
  1216. END
  1217.  ;
  1218.  
  1219.  
  1220. ALTER PROCEDURE "CHECK_GENPK" 
  1221. RETURNS
  1222. (
  1223.   "INFO" VARCHAR(50)
  1224. )
  1225. AS
  1226. DECLARE VARIABLE N1 INTEGER;
  1227. DECLARE VARIABLE N2 INTEGER;
  1228. begin
  1229. /* GENPK_BLOBS */
  1230. N1 = gen_id(genpk_blobs,0);
  1231. SELECT MAX(INDX) FROM blobs INTO :N2;
  1232. if (n1<>n2 AND n1>5) then
  1233.   begin
  1234.   info = 'Index de la table BLOBS rΘajustΘ de ' || n1 || ' α ' || n2;
  1235.   suspend;
  1236.   n1 = gen_id(genpk_blobs, n2-n1);
  1237.   end
  1238.  
  1239. /* GENPK_COMPTES */
  1240. N1 = gen_id(genpk_comptes,0);
  1241. SELECT MAX(INDX) FROM comptes INTO :N2;
  1242. if (n1<>n2) then
  1243.   begin
  1244.   info = 'Index de la table COMPTES rΘajustΘ de ' || n1 || ' α ' || n2;
  1245.   n1 = gen_id(genpk_comptes, n2-n1);
  1246.   suspend;
  1247.   end
  1248.  
  1249. /* GENPK_ETATS */
  1250. N1 = gen_id(genpk_etats,0);
  1251. SELECT MAX(INDX) FROM etats INTO :N2;
  1252. if (n1<>n2) then
  1253.   begin
  1254.   info = 'Index de la table ETATS rΘajustΘ de ' || n1 || ' α ' || n2;
  1255.   n1 = gen_id(genpk_etats, n2-n1);
  1256.   suspend;
  1257.   end
  1258.  
  1259. /* GENPK_EXERCICE */
  1260. N1 = gen_id(genpk_exercice,0);
  1261. SELECT MAX(INDX) FROM exercice INTO :N2;
  1262. if (n1<>n2) then
  1263.   begin
  1264.   info = 'Index de la table EXERCICE rΘajustΘ de ' || n1 || ' α ' || n2;
  1265.   n1 = gen_id(genpk_exercice, n2-n1);
  1266.   suspend;
  1267.   end
  1268.  
  1269. /* GENPK_JOURNAL */
  1270. N1 = gen_id(genpk_journal,0);
  1271. SELECT MAX(INDX) FROM journal INTO :N2;
  1272. if (n1<>n2) then
  1273.   begin
  1274.   info = 'Index de la table JOURNAL rΘajustΘ de ' || n1 || ' α ' || n2;
  1275.   n1 = gen_id(genpk_journal, n2-n1);
  1276.   suspend;
  1277.   end
  1278.  
  1279. /* GENPK_JOURNAL_MOIS */
  1280. N1 = gen_id(genpk_journal_mois,0);
  1281. SELECT MAX(INDX) FROM journal_mois INTO :N2;
  1282. if (n1<>n2) then
  1283.   begin
  1284.   info = 'Index de la table JOURNAL_MOIS rΘajustΘ de ' || n1 || ' α ' || n2;
  1285.   n1 = gen_id(genpk_journal_mois, n2-n1);
  1286.   suspend;
  1287.   end
  1288.  
  1289. /* GENPK_MODELES */
  1290. N1 = gen_id(genpk_modeles,0);
  1291. SELECT MAX(INDX) FROM MODELES INTO :N2;
  1292. if (n1<>n2) then
  1293.   begin
  1294.   info = 'Index de la table MODELES rΘajustΘ de ' || n1 || ' α ' || n2;
  1295.   n1 = gen_id(genpk_modeles, n2-n1);
  1296.   suspend;
  1297.   end
  1298.  
  1299. /* GENPK_MOUVEMENTS */
  1300. N1 = gen_id(genpk_mouvements,0);
  1301. SELECT MAX(INDX) FROM mouvements INTO :N2;
  1302. if (n1<>n2) then
  1303.   begin
  1304.   info = 'Index de la table MOUVEMENTS rΘajustΘ de ' || n1 || ' α ' || n2;
  1305.   n1 = gen_id(genpk_mouvements, n2-n1);
  1306.   suspend;
  1307.   end
  1308.  
  1309. /* GENPK_TIERS */
  1310. N1 = gen_id(genpk_tiers,0);
  1311. SELECT MAX(INDX) FROM tiers INTO :N2;
  1312. if (n1<>n2 AND n1>1) then
  1313.   begin
  1314.   info = 'Index de la table TIERS rΘajustΘ de ' || n1 || ' α ' || n2;
  1315.   n1 = gen_id(genpk_tiers, n2-n1);
  1316.   suspend;
  1317.   end
  1318.  
  1319. /* GENPK_TVA */
  1320. N1 = gen_id(genpk_tva,0);
  1321. SELECT MAX(INDX) FROM TVA INTO :N2;
  1322. if (n1<>n2) then
  1323.   begin
  1324.   info = 'Index de la table TVA rΘajustΘ de ' || n1 || ' α ' || n2;
  1325.   n1 = gen_id(genpk_tva, n2-n1);
  1326.   suspend;
  1327.   end
  1328. end
  1329.  ;
  1330.  
  1331.  
  1332. ALTER PROCEDURE "COPIE_LETTRAGE" 
  1333. (
  1334.   "MVT_1" INTEGER
  1335. )
  1336. RETURNS
  1337. (
  1338.   "INFO" VARCHAR(80)
  1339. )
  1340. AS
  1341. DECLARE VARIABLE INDX_CPT INTEGER;
  1342. DECLARE VARIABLE NOLIGNE SMALLINT;
  1343. DECLARE VARIABLE LIBELLE VARCHAR(80);
  1344. DECLARE VARIABLE MONTANT DECIMAL(12,2);
  1345. DECLARE VARIABLE SENS CHAR(1);
  1346. DECLARE VARIABLE LETTRAGE VARCHAR(4);
  1347. DECLARE VARIABLE NOLIGNE1 SMALLINT;
  1348. DECLARE VARIABLE INDX_E INTEGER;
  1349. DECLARE VARIABLE MVT_2 INTEGER;
  1350. begin
  1351. SELECT INDX_EXERCICE FROM MOUVEMENTS WHERE INDX=:MVT_1 INTO :INDX_E;
  1352. SELECT MVT_A_NOUVEAU FROM EXERCICE WHERE INDX=:INDX_E INTO :MVT_2;
  1353. if ((MVT_2 IS NOT NULL) AND (MVT_2>0)) then
  1354.   BEGIN
  1355.   FOR SELECT INDX_CPT,LIGNE,LIBELLE,MONTANT,SENS,LETTRAGE  FROM LIGNES
  1356.       WHERE INDX_MVT=:MVT_2 AND LETTRAGE IS NOT NULL
  1357.       INTO :INDX_CPT,:NOLIGNE,:LIBELLE,:MONTANT,:SENS,:LETTRAGE DO
  1358.     BEGIN
  1359.     /* existe t'il une ligne identique dans le nouveau Mvt */
  1360.     SELECT LIGNE FROM LIGNES
  1361.       WHERE INDX_MVT=:MVT_1 AND INDX_CPT=:INDX_CPT AND LIBELLE=:LIBELLE AND MONTANT=:MONTANT AND SENS=:SENS
  1362.       INTO :NOLIGNE1;
  1363.     if ((NOLIGNE1 IS NOT NULL) AND (NOLIGNE1>0)) then
  1364.       BEGIN
  1365.       /* Copier le lettrage */
  1366.       UPDATE LIGNES SET LETTRAGE=:LETTRAGE WHERE INDX_MVT=:MVT_1 AND LIGNE=:NOLIGNE1;
  1367.       UPDATE LIGNES SET LETTRAGE=NULL WHERE INDX_MVT=:MVT_2 AND LIGNE=:NOLIGNE;
  1368.       END
  1369.     ELSE
  1370.       BEGIN
  1371.       UPDATE LIGNES SET LETTRAGE=NULL WHERE LETTRAGE=:LETTRAGE AND INDXE=:INDX_E;
  1372.       INFO = 'Le lettrage ' || LETTRAGE || ' a ΘtΘ effacΘ';
  1373.       SUSPEND;
  1374.       END
  1375.     END
  1376.   END
  1377. DELETE FROM MOUVEMENTS WHERE INDX=:MVT_2;
  1378. UPDATE EXERCICE SET MVT_A_NOUVEAU=:MVT_1 WHERE INDX=:INDX_E;
  1379. end
  1380.  ;
  1381.  
  1382.  
  1383. ALTER PROCEDURE "EFFACE_MODELE" 
  1384. (
  1385.   "INDEX_MODELE" SMALLINT
  1386. )
  1387. AS
  1388. DECLARE VARIABLE I INTEGER;
  1389. BEGIN
  1390. SELECT INDX_BLOB FROM MODELES WHERE INDX=:INDEX_MODELE INTO :I;
  1391. DELETE FROM MODELES WHERE INDX=:INDEX_MODELE;
  1392. DELETE FROM BLOBS WHERE INDX=:I;
  1393. END
  1394.  ;
  1395.  
  1396.  
  1397. ALTER PROCEDURE "EFF_COMPTE" 
  1398. (
  1399.   "INDEX_CPT" INTEGER
  1400. )
  1401. RETURNS
  1402. (
  1403.   "EFF_OK" SMALLINT
  1404. )
  1405. AS
  1406. BEGIN
  1407. SELECT EFF_OK FROM EFF_COMPTE_OK(:INDEX_CPT) INTO :EFF_OK;
  1408. IF (EFF_OK=1) THEN DELETE FROM COMPTES WHERE INDX=:INDEX_CPT OR REGROUPEMENT=:INDEX_CPT;
  1409. EXIT;
  1410. END
  1411.  ;
  1412.  
  1413.  
  1414. ALTER PROCEDURE "EFF_COMPTE_OK" 
  1415. (
  1416.   "INDEX_CPT" INTEGER
  1417. )
  1418. RETURNS
  1419. (
  1420.   "EFF_OK" SMALLINT
  1421. )
  1422. AS
  1423. DECLARE VARIABLE N INTEGER;
  1424. DECLARE VARIABLE INDX INTEGER;
  1425. BEGIN
  1426. SELECT VERROU FROM CALCUL_VERROU_UN_COMPTE(:INDEX_CPT) INTO :N;
  1427. IF (N=0) THEN EFF_OK=1; ELSE EFF_OK=0;
  1428. SUSPEND;
  1429. END
  1430.  ;
  1431.  
  1432.  
  1433. ALTER PROCEDURE "EFF_EXERCICE_OK" 
  1434. (
  1435.   "INDEX_E" SMALLINT
  1436. )
  1437. RETURNS
  1438. (
  1439.   "EFF_OK" SMALLINT
  1440. )
  1441. AS
  1442. DECLARE VARIABLE N INTEGER;
  1443. BEGIN
  1444. SELECT COUNT(*) FROM MOUVEMENTS M
  1445. JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M AND JM.INDX_EXERCICE=:INDEX_E
  1446. WHERE VERROU<>0 INTO :N;
  1447. IF (N>0) THEN EFF_OK=0; ELSE EFF_OK=1;
  1448. SUSPEND;
  1449. END
  1450.  ;
  1451.  
  1452.  
  1453. ALTER PROCEDURE "EFF_JOURNAL_MOIS" 
  1454. (
  1455.   "INDEX_JM" SMALLINT
  1456. )
  1457. RETURNS
  1458. (
  1459.   "EFF_OK" SMALLINT
  1460. )
  1461. AS
  1462. DECLARE VARIABLE N INTEGER;
  1463. BEGIN
  1464. SELECT COUNT(*) FROM MOUVEMENTS WHERE VERROU<>0 AND INDX_JOURNAL_M=:INDEX_JM INTO :N;
  1465. IF (N>0) THEN EFF_OK=0; ELSE
  1466.   BEGIN
  1467.   EFF_OK=1;
  1468.   DELETE FROM JOURNAL_MOIS WHERE INDX=:INDEX_JM;
  1469.   END
  1470. SUSPEND;
  1471. END
  1472.  ;
  1473.  
  1474.  
  1475. ALTER PROCEDURE "EFF_JOURNAL_MOIS_OK" 
  1476. (
  1477.   "INDEX_JM" SMALLINT
  1478. )
  1479. RETURNS
  1480. (
  1481.   "EFF_OK" SMALLINT
  1482. )
  1483. AS
  1484. DECLARE VARIABLE N INTEGER;
  1485. BEGIN
  1486. SELECT COUNT(*) FROM MOUVEMENTS WHERE VERROU<>0 AND INDX_JOURNAL_M=:INDEX_JM INTO :N;
  1487. IF (N>0) THEN EFF_OK=0; ELSE EFF_OK=1;
  1488. SUSPEND;
  1489. END
  1490.  ;
  1491.  
  1492.  
  1493. ALTER PROCEDURE "EFF_JOURNAL_OK" 
  1494. (
  1495.   "INDEX_J" SMALLINT
  1496. )
  1497. RETURNS
  1498. (
  1499.   "EFF_OK" SMALLINT
  1500. )
  1501. AS
  1502. DECLARE VARIABLE N INTEGER;
  1503. BEGIN
  1504. SELECT COUNT(*) FROM MOUVEMENTS M
  1505. JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M AND JM.INDX_JOURNAL=:INDEX_J
  1506. WHERE VERROU<>0 INTO :N;
  1507. IF (N>0) THEN EFF_OK=0; ELSE EFF_OK=1;
  1508. SUSPEND;
  1509. END
  1510.  ;
  1511.  
  1512.  
  1513. ALTER PROCEDURE "EFF_LISTE_COMPTE_OK" 
  1514. (
  1515.   "NOLISTE" INTEGER
  1516. )
  1517. RETURNS
  1518. (
  1519.   "EFF_OK" SMALLINT
  1520. )
  1521. AS
  1522. DECLARE VARIABLE N INTEGER;
  1523. BEGIN
  1524. SELECT COUNT(LI.INDX) FROM LISTE LI
  1525. JOIN LIGNES LG ON LG.INDX_CPT=LI.INDX OR LG.INDX_RGP=LI.INDX
  1526. JOIN MOUVEMENTS M ON M.INDX=LG.INDX_MVT AND M.VERROU=1
  1527. WHERE LI.NOLISTE=:NOLISTE
  1528. INTO N;
  1529. IF (N>0) THEN EFF_OK=0; ELSE EFF_OK=1;
  1530. SUSPEND;
  1531. END
  1532.  ;
  1533.  
  1534.  
  1535. ALTER PROCEDURE "EFF_MOUVEMENT" 
  1536. (
  1537.   "INDEX_MVT" INTEGER
  1538. )
  1539. RETURNS
  1540. (
  1541.   "EFF_OK" SMALLINT
  1542. )
  1543. AS
  1544. DECLARE VARIABLE N INTEGER;
  1545. BEGIN
  1546. SELECT VERROU FROM MOUVEMENTS WHERE INDX=:INDEX_MVT INTO :N;
  1547. if (N=0) then
  1548.   SELECT COUNT(*) FROM LIGNES WHERE INDX_MVT=:INDEX_MVT AND LETTRAGE IS NOT NULL INTO :N;
  1549. IF (N<>0) THEN EFF_OK=0; ELSE
  1550.   BEGIN
  1551.   EFF_OK=1;
  1552.   DELETE FROM MOUVEMENTS WHERE INDX=:INDEX_MVT;
  1553.   END
  1554. SUSPEND;
  1555. END
  1556.  ;
  1557.  
  1558.  
  1559. ALTER PROCEDURE "EXPORT_ADRESSE" 
  1560. (
  1561.   "INDX" INTEGER
  1562. )
  1563. RETURNS
  1564. (
  1565.   "RESULT" VARCHAR(30)
  1566. )
  1567. AS
  1568. DECLARE VARIABLE ADRESSE VARCHAR(26);
  1569. DECLARE VARIABLE ADRESSE2 VARCHAR(26);
  1570. DECLARE VARIABLE LOCALITE VARCHAR(21);
  1571. DECLARE VARIABLE CODEPOSTAL VARCHAR(8);
  1572. DECLARE VARIABLE VILLE VARCHAR(22);
  1573. DECLARE VARIABLE PAYS VARCHAR(22);
  1574. BEGIN
  1575. SELECT ADRESSE,ADRESSE2,LOCALITE,CODEPOSTAL,VILLE,PAYS
  1576.   FROM TIERS
  1577.   WHERE INDX=:INDX
  1578.   INTO :ADRESSE,:ADRESSE2,:LOCALITE,:CODEPOSTAL,:VILLE,:PAYS;
  1579.  
  1580. RESULT = '[ADRESSE' || :INDX || ']';
  1581. SUSPEND;
  1582. RESULT = ADRESSE;
  1583. SUSPEND;
  1584. RESULT = ADRESSE2;
  1585. SUSPEND;
  1586. RESULT = LOCALITE;
  1587. SUSPEND;
  1588. RESULT = CODEPOSTAL;
  1589. SUSPEND;
  1590. RESULT = VILLE;
  1591. SUSPEND;
  1592. RESULT = PAYS;
  1593. SUSPEND;
  1594. END
  1595.  ;
  1596.  
  1597.  
  1598. ALTER PROCEDURE "EXPORT_COMPTE" 
  1599. (
  1600.   "INDX_C" INTEGER
  1601. )
  1602. RETURNS
  1603. (
  1604.   "RESULT" VARCHAR(90)
  1605. )
  1606. AS
  1607. DECLARE VARIABLE INDX INTEGER;
  1608. DECLARE VARIABLE LIB_COURT VARCHAR(15);
  1609. DECLARE VARIABLE LIB_LONG VARCHAR(80);
  1610. DECLARE VARIABLE INDX_TIERS INTEGER;
  1611. DECLARE VARIABLE REGROUPEMENT VARCHAR(15);
  1612. DECLARE VARIABLE TVA DECIMAL(4,2);
  1613. BEGIN
  1614. SELECT C.LIB_COURT,C.LIB_LONG,C.INDX_TIERS,C1.LIB_COURT,T.VALEUR FROM COMPTES C
  1615. LEFT JOIN COMPTES C1 ON C1.INDX=C.REGROUPEMENT
  1616. LEFT JOIN TVA T ON T.INDX=C.INDX_TVA
  1617. WHERE C.INDX=:INDX_C
  1618. INTO :LIB_COURT,:LIB_LONG,:INDX_TIERS,:REGROUPEMENT,:TVA;
  1619. RESULT = '[COMPTE]';
  1620. SUSPEND;
  1621. RESULT = LIB_COURT;
  1622. SUSPEND;
  1623. RESULT = LIB_LONG;
  1624. SUSPEND;
  1625. RESULT = INDX_TIERS;
  1626. SUSPEND;
  1627. RESULT = REGROUPEMENT;
  1628. SUSPEND;
  1629. RESULT = TVA;
  1630. SUSPEND;
  1631. END
  1632.  ;
  1633.  
  1634.  
  1635. ALTER PROCEDURE "EXPORT_COMPTES" 
  1636. (
  1637.   "NOLISTE" INTEGER
  1638. )
  1639. RETURNS
  1640. (
  1641.   "RESULT" VARCHAR(250)
  1642. )
  1643. AS
  1644. DECLARE VARIABLE INDX INTEGER;
  1645. DECLARE VARIABLE INDX1 INTEGER;
  1646. DECLARE VARIABLE INDX2 INTEGER;
  1647. DECLARE VARIABLE LIB_COURT VARCHAR(15);
  1648. DECLARE VARIABLE LIB_LONG VARCHAR(80);
  1649. DECLARE VARIABLE CODEMAGASIN VARCHAR(15);
  1650. DECLARE VARIABLE REGROUPEMENT VARCHAR(15);
  1651. DECLARE VARIABLE VALEUR_TVA VARCHAR(6);
  1652. BEGIN
  1653. /* L'exportation de comptes n'a de sens que vers une autre compta
  1654. Il faut donc exporter TOUT ce qui dΘpend des comptes.
  1655. La liste des comptes α exporter est dans la table LISTE selectionnΘ par NOLISTE */
  1656.  
  1657. /* D'abord les TVA */
  1658. FOR SELECT DISTINCT C.INDX_TVA FROM LISTE L
  1659.     JOIN COMPTES C ON C.INDX=L.INDX
  1660.     WHERE L.NOLISTE=:NOLISTE
  1661.     INTO :INDX
  1662.     DO IF (INDX IS NOT NULL) THEN FOR SELECT RESULT FROM EXPORT_TVA(:INDX) INTO :RESULT DO SUSPEND;
  1663.  
  1664. /* Puis les tiers */
  1665.  
  1666. /* Puis les comptes de regroupement */
  1667. FOR SELECT DISTINCT C.REGROUPEMENT FROM LISTE L
  1668.     JOIN COMPTES C ON C.INDX=L.INDX
  1669.     WHERE L.NOLISTE=:NOLISTE AND C.REGROUPEMENT IS NOT NULL
  1670.                     INTO :INDX1 DO
  1671.     BEGIN
  1672.     SELECT COUNT(*) FROM LISTE WHERE INDX=:INDX1 AND NOLISTE=:NOLISTE INTO :INDX2;
  1673.     IF (INDX2=0) THEN FOR SELECT RESULT FROM EXPORT_COMPTE(:INDX1) INTO :RESULT DO SUSPEND;
  1674.     END
  1675.  
  1676. /* Marquer la fin des comptes de regroupement */
  1677. RESULT = '[FIN PREAMBULE]';
  1678. SUSPEND;
  1679.  
  1680. /* Enfin les comptes */
  1681. FOR SELECT DISTINCT INDX FROM LISTE  WHERE NOLISTE=:NOLISTE INTO :INDX1 DO
  1682.   FOR SELECT RESULT FROM EXPORT_COMPTE(:INDX1) INTO :RESULT DO SUSPEND;
  1683.  
  1684. /* Et faire le mΘnage */
  1685. DELETE FROM LISTE WHERE NOLISTE=:NOLISTE;
  1686. END
  1687.  ;
  1688.  
  1689.  
  1690. ALTER PROCEDURE "EXPORT_TIERS" 
  1691. (
  1692.   "INDX" INTEGER
  1693. )
  1694. RETURNS
  1695. (
  1696.   "RESULT" VARCHAR(250)
  1697. )
  1698. AS
  1699. BEGIN
  1700. RESULT=NULL;
  1701. SUSPEND;
  1702. END
  1703.  ;
  1704.  
  1705.  
  1706. ALTER PROCEDURE "EXPORT_TVA" 
  1707. (
  1708.   "INDX" INTEGER
  1709. )
  1710. RETURNS
  1711. (
  1712.   "RESULT" VARCHAR(250)
  1713. )
  1714. AS
  1715. DECLARE VARIABLE DESIGNATION VARCHAR(40);
  1716. DECLARE VARIABLE VALEUR VARCHAR(8);
  1717. BEGIN
  1718. SELECT DESIGNATION,VALEUR FROM TVA WHERE INDX=:INDX INTO :DESIGNATION,:VALEUR;
  1719. IF (DESIGNATION IS NOT NULL) THEN
  1720.   BEGIN
  1721.   RESULT = '[TVA]';
  1722.   SUSPEND;
  1723.   RESULT = DESIGNATION;
  1724.   SUSPEND;
  1725.   RESULT = VALEUR;
  1726.   SUSPEND;
  1727.   END
  1728. END
  1729.  ;
  1730.  
  1731.  
  1732. ALTER PROCEDURE "EXTRAIT_COMPTE" 
  1733. (
  1734.   "INDX_CPT" INTEGER,
  1735.   "INDX_EXERCICE" SMALLINT,
  1736.   "LETTRE" SMALLINT,
  1737.   "NON_LETTRE" SMALLINT
  1738. )
  1739. RETURNS
  1740. (
  1741.   "DATE_MVT" DATE,
  1742.   "CODEJ" VARCHAR(4),
  1743.   "NO_INTERNE" VARCHAR(15),
  1744.   "NO_EXTERNE" VARCHAR(15),
  1745.   "LIBELLE" VARCHAR(80),
  1746.   "LETTRAGE" VARCHAR(4),
  1747.   "DEBIT" DECIMAL(12, 2),
  1748.   "CREDIT" DECIMAL(12, 2),
  1749.   "SOLDEP" DECIMAL(12, 2)
  1750. )
  1751. AS
  1752. DECLARE VARIABLE SENS CHAR(10);
  1753. DECLARE VARIABLE MONTANT DECIMAL(12,2);
  1754. begin
  1755.   SOLDEP = 0;
  1756.   FOR SELECT L.MONTANT,L.SENS,L.LETTRAGE,L.LIBELLE
  1757.             ,M.DATE_MVT,M.NO_INTERNE,M.NO_EXTERNE
  1758.             ,J.SHORTDESI
  1759.             from lignes L
  1760.     JOIN MOUVEMENTS M ON M.INDX=L.INDX_MVT
  1761.     JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
  1762.     JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL
  1763.     /* On ne regroupe pas les comptes */
  1764.     where (INDXE=:INDX_EXERCICE) AND (L.INDX_CPT=:INDX_CPT)
  1765.     AND (L.MONTANT IS NOT NULL) AND (L.MONTANT<>0)
  1766.     ORDER BY M.DATE_MVT, J.SHORTDESI
  1767.     INTO :MONTANT,:SENS,:LETTRAGE,:LIBELLE,:DATE_MVT,:NO_INTERNE,:NO_EXTERNE
  1768.     ,:CODEJ DO
  1769.     BEGIN
  1770.     IF (SENS='C') THEN
  1771.       BEGIN
  1772.       SOLDEP = SOLDEP - MONTANT;
  1773.       CREDIT = MONTANT;
  1774.       DEBIT = NULL;
  1775.       END
  1776.     ELSE
  1777.      BEGIN
  1778.      SOLDEP = SOLDEP + MONTANT;
  1779.      CREDIT=NULL;
  1780.      DEBIT = MONTANT;
  1781.      END
  1782.     SUSPEND;
  1783.     END
  1784. end
  1785.  ;
  1786.  
  1787.  
  1788. ALTER PROCEDURE "GET_INDEXS_COMPTE" 
  1789. (
  1790.   "LIB_CG" VARCHAR(15),
  1791.   "LIB_CA" VARCHAR(15)
  1792. )
  1793. RETURNS
  1794. (
  1795.   "INDX_CG" VARCHAR(15),
  1796.   "INDX_CA" VARCHAR(15)
  1797. )
  1798. AS
  1799. BEGIN
  1800.  
  1801. IF (LIB_CA IS NULL or (LIB_CA='')) THEN
  1802.   BEGIN
  1803.   SELECT INDX FROM COMPTES WHERE upper(LIB_COURT)=upper(:LIB_CG) AND REGROUPEMENT IS NULL INTO :INDX_CG;
  1804.   END
  1805. ELSE
  1806.   SELECT C.REGROUPEMENT,C.INDX FROM COMPTES C
  1807.   JOIN COMPTES C1 ON C1.INDX=C.REGROUPEMENT AND upper(C1.LIB_COURT)=upper(:LIB_CG)
  1808.   WHERE upper(C.LIB_COURT)=upper(:LIB_CA) INTO :INDX_CG,:INDX_CA;
  1809. SUSPEND;
  1810. END
  1811.  ;
  1812.  
  1813.  
  1814. ALTER PROCEDURE "GET_INDEX_JM" 
  1815. (
  1816.   "DESI" VARCHAR(4),
  1817.   "MOIS" SMALLINT,
  1818.   "INDX_EXERCICE" SMALLINT
  1819. )
  1820. RETURNS
  1821. (
  1822.   "INDX" INTEGER
  1823. )
  1824. AS
  1825. BEGIN
  1826. SELECT JM.INDX FROM JOURNAL_MOIS JM
  1827. JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL AND J.SHORTDESI=:DESI
  1828. WHERE JM.INDX_EXERCICE=:INDX_EXERCICE AND JM.MOIS=:MOIS
  1829. INTO :INDX;
  1830. SUSPEND;
  1831. END
  1832.  ;
  1833.  
  1834.  
  1835. ALTER PROCEDURE "GET_INDX_COMPTE" 
  1836. (
  1837.   "LIB_CG" VARCHAR(15),
  1838.   "LIB_CA" VARCHAR(15)
  1839. )
  1840. RETURNS
  1841. (
  1842.   "INDX" INTEGER
  1843. )
  1844. AS
  1845. BEGIN
  1846. IF (LIB_CA IS NULL or (LIB_CA='')) THEN SELECT INDX FROM COMPTES WHERE upper(LIB_COURT)=upper(:LIB_CG) AND REGROUPEMENT IS NULL INTO :INDX;
  1847. ELSE
  1848.   SELECT C.INDX FROM COMPTES C
  1849.   JOIN COMPTES C1 ON C1.INDX=C.REGROUPEMENT AND upper(C1.LIB_COURT)=upper(:LIB_CG)
  1850.   WHERE upper(C.LIB_COURT)=upper(:LIB_CA) INTO :INDX;
  1851. SUSPEND;
  1852. END
  1853.  ;
  1854.  
  1855.  
  1856. ALTER PROCEDURE "GET_LETTRAGE" 
  1857. (
  1858.   "INDX_CPT" INTEGER,
  1859.   "INDX_E" INTEGER
  1860. )
  1861. RETURNS
  1862. (
  1863.   "LETTRAGE" VARCHAR(4)
  1864. )
  1865. AS
  1866. DECLARE VARIABLE I INTEGER;
  1867. begin
  1868. LETTRAGE = 'A';
  1869. I = 1;
  1870. WHILE (i<>0) DO
  1871.   BEGIN
  1872.   SELECT COUNT(*) FROM LIGNES L
  1873.   WHERE INDXE=:INDX_E AND INDX_CPT=:INDX_CPT AND LETTRAGE=:LETTRAGE
  1874.   INTO :i;
  1875.   if (i<>0) then SELECT RESULT FROM get_next_lettrage(:lettrage) INTO :lettrage;
  1876.   END
  1877. suspend;
  1878. end
  1879.  ;
  1880.  
  1881.  
  1882. ALTER PROCEDURE "GET_LIB_COURTS" 
  1883. (
  1884.   "INDX" INTEGER
  1885. )
  1886. RETURNS
  1887. (
  1888.   "LIBGENE" VARCHAR(15),
  1889.   "LIBAUXI" VARCHAR(15)
  1890. )
  1891. AS
  1892. DECLARE VARIABLE AUX INTEGER;
  1893. BEGIN
  1894. SELECT "LIB_COURT","REGROUPEMENT" FROM COMPTES WHERE INDX=:INDX INTO :LIBGENE,:AUX;
  1895. IF (AUX IS NOT NULL) THEN
  1896.   BEGIN
  1897.   LIBAUXI = LIBGENE;
  1898.   SELECT LIB_COURT FROM COMPTES WHERE INDX=:AUX INTO :LIBGENE;
  1899.   END
  1900. SUSPEND;
  1901. END
  1902.  ;
  1903.  
  1904.  
  1905. ALTER PROCEDURE "GET_NEXT_LETTRAGE" 
  1906. (
  1907.   "LETTRAGE" VARCHAR(4)
  1908. )
  1909. RETURNS
  1910. (
  1911.   "RESULT" VARCHAR(4)
  1912. )
  1913. AS
  1914. DECLARE VARIABLE LEN SMALLINT;
  1915. DECLARE VARIABLE I SMALLINT;
  1916. BEGIN
  1917. LEN = STRLEN(LETTRAGE);
  1918. if (LETTRAGE=SUBSTRLEN('ZZZZ',1,LEN)) then
  1919.   BEGIN
  1920.   if (LEN<4) then RESULT = SUBSTRLEN('AAAA',1,LEN+1);
  1921.   ELSE EXCEPTION OUT_OF_LETTRES;
  1922.   END
  1923. ELSE
  1924.   BEGIN
  1925.   i = LEN;
  1926.   WHILE ((i>1) AND (SUBSTRLEN(LETTRAGE,i,1)='Z')) DO i=i-1;
  1927.   RESULT = SUBSTRLEN(LETTRAGE,1,i-1)
  1928.         || ASCII_CHAR(ascii_val(SUBSTRLEN(LETTRAGE,i,1))+1)
  1929.         || SUBSTR('AAAA',i+1,LEN);
  1930.   END
  1931. suspend;
  1932. END
  1933.  ;
  1934.  
  1935.  
  1936. ALTER PROCEDURE "GET_NOM_COMPTE" 
  1937. (
  1938.   "INDX" INTEGER
  1939. )
  1940. RETURNS
  1941. (
  1942.   "NOM" VARCHAR(250)
  1943. )
  1944. AS
  1945. DECLARE VARIABLE AUX INTEGER;
  1946. DECLARE VARIABLE LCG VARCHAR(15);
  1947. BEGIN
  1948. SELECT "LIB_COURT" || ' ' || "LIB_LONG","REGROUPEMENT" FROM COMPTES WHERE INDX=:INDX INTO :NOM,:AUX;
  1949. IF (AUX IS NOT NULL) THEN
  1950.   BEGIN
  1951.   SELECT LIB_COURT FROM COMPTES WHERE INDX=:AUX INTO :LCG;
  1952.   NOM = LCG || ' ' || NOM;
  1953.   END
  1954. SUSPEND;
  1955. END
  1956.  ;
  1957.  
  1958.  
  1959. ALTER PROCEDURE "GET_NOM_COMPTE_GENERAL" 
  1960. (
  1961.   "INDX" INTEGER
  1962. )
  1963. RETURNS
  1964. (
  1965.   "LIBELLE" VARCHAR(15)
  1966. )
  1967. AS
  1968. DECLARE VARIABLE AUX INTEGER;
  1969. BEGIN
  1970. SELECT "LIB_COURT","REGROUPEMENT" FROM COMPTES WHERE INDX=:INDX INTO :LIBELLE,:AUX;
  1971. IF (AUX IS NOT NULL) THEN SELECT LIB_COURT FROM COMPTES WHERE INDX=:AUX INTO :LIBELLE;
  1972. SUSPEND;
  1973. END
  1974.  ;
  1975.  
  1976.  
  1977. ALTER PROCEDURE "GET_REPORT_JM_COMPTE" 
  1978. (
  1979.   "INDEX_JM" SMALLINT
  1980. )
  1981. RETURNS
  1982. (
  1983.   "CREDIT" DECIMAL(12, 2),
  1984.   "DEBIT" DECIMAL(12, 2)
  1985. )
  1986. AS
  1987. DECLARE VARIABLE INDX_EXERCICE SMALLINT;
  1988. DECLARE VARIABLE INDX_JOURNAL SMALLINT;
  1989. DECLARE VARIABLE TYPEJ SMALLINT;
  1990. DECLARE VARIABLE NOMOIS SMALLINT;
  1991. DECLARE VARIABLE C1 DECIMAL(12,2);
  1992. DECLARE VARIABLE INDX_C INTEGER;
  1993. BEGIN
  1994. /* Rapatrier diverses variables */
  1995.   SELECT JM.INDX_EXERCICE,JM.INDX_JOURNAL,JM.NOMOIS,J.TYPEJX,J.INDX_COMPTE FROM JOURNAL_MOIS JM
  1996.   JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL 
  1997.   WHERE JM.INDX=:INDEX_JM
  1998.   INTO :INDX_EXERCICE,:INDX_JOURNAL,:NOMOIS,:TYPEJ,:INDX_C;
  1999. /* Puis le solde des journaux antΘrieurs */
  2000.   IF (TYPEJ=4) THEN
  2001.     BEGIN
  2002.     CREDIT=0;
  2003.     DEBIT=0;
  2004.     END
  2005.   ELSE
  2006.     BEGIN
  2007.     /* Calculer solde initial */
  2008.     SELECT DEBIT,CREDIT FROM A_NOUVEAU_COMPTE(:INDX_EXERCICE,:INDX_C) INTO :DEBIT,:CREDIT;
  2009.     
  2010.     SELECT SUM(SOLDE_COMPTE) FROM JOURNAL_MOIS
  2011.     WHERE INDX_JOURNAL=:INDX_JOURNAL AND INDX_EXERCICE=:INDX_EXERCICE AND NOMOIS<:NOMOIS
  2012.     INTO :C1;
  2013.     IF (C1 IS NOT NULL) THEN IF (C1<0) THEN DEBIT = DEBIT - C1; ELSE CREDIT = CREDIT + C1;
  2014.     END
  2015. SUSPEND;
  2016. END
  2017.  ;
  2018.  
  2019.  
  2020. ALTER PROCEDURE "GET_SOLDE_JOURNAL" 
  2021. (
  2022.   "INDEX_JM" SMALLINT
  2023. )
  2024. RETURNS
  2025. (
  2026.   "MONTANT" DECIMAL(12, 2)
  2027. )
  2028. AS
  2029. BEGIN
  2030.    SELECT SUM(L.MONTANT) FROM MOUVEMENTS M
  2031.    JOIN  LIGNES L ON L.INDX_MVT=M.INDX AND L.SENS='C'
  2032.    WHERE M.INDX_JOURNAL_M=:INDEX_JM
  2033.    INTO :MONTANT;
  2034. SUSPEND;
  2035. END
  2036.  ;
  2037.  
  2038.  
  2039. ALTER PROCEDURE "GRAND_LIVRE" 
  2040. (
  2041.   "INDX_EXERCICE" SMALLINT,
  2042.   "INDEX_CPT" INTEGER,
  2043.   "AVEC_TIERS" SMALLINT,
  2044.   "QUE_LETTRE" SMALLINT,
  2045.   "QUE_NON_LETTRE" SMALLINT
  2046. )
  2047. RETURNS
  2048. (
  2049.   "INDX" INTEGER,
  2050.   "DATE_MVT" DATE,
  2051.   "CODEJ" VARCHAR(4),
  2052.   "NO_INTERNE" VARCHAR(15),
  2053.   "NO_EXTERNE" VARCHAR(15),
  2054.   "LIBELLE" VARCHAR(80),
  2055.   "LETTRAGE" VARCHAR(4),
  2056.   "DEBIT" DECIMAL(12, 2),
  2057.   "CREDIT" DECIMAL(12, 2),
  2058.   "SOLDEP" DECIMAL(12, 2),
  2059.   "LIB_GENE" VARCHAR(15),
  2060.   "LIB_AUXI" VARCHAR(15)
  2061. )
  2062. AS
  2063. DECLARE VARIABLE SENS CHAR(10);
  2064. DECLARE VARIABLE MONTANT DECIMAL(12,2);
  2065. begin
  2066. FOR SELECT INDX,COMPTE,TIERS FROM LISTE_COMPTES(:AVEC_TIERS)
  2067. INTO :INDX,:LIB_GENE,:LIB_AUXI DO IF ((:INDEX_CPT=0) or (:INDEX_CPT=:INDX)) THEN
  2068.   BEGIN
  2069.   SOLDEP = 0;
  2070.   FOR SELECT L.MONTANT,L.SENS,L.LETTRAGE,L.LIBELLE
  2071.             ,M.DATE_MVT,M.NO_INTERNE,M.NO_EXTERNE
  2072.             ,J.SHORTDESI
  2073.             from lignes L
  2074.     JOIN MOUVEMENTS M ON M.INDX=L.INDX_MVT
  2075.     JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
  2076.     JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL
  2077.     where ((INDXE=:INDX_EXERCICE) AND (INDX_CPT=:INDX) or ((:AVEC_TIERS=0) AND (INDX_RGP=:INDX)))
  2078.           AND ((:QUE_LETTRE=0) or (L.LETTRAGE IS NOT NULL))
  2079.           AND ((:QUE_NON_LETTRE=0) or (L.LETTRAGE IS NULL))
  2080.           AND ((MONTANT IS NOT NULL) AND (MONTANT<>0))
  2081.     ORDER BY M.DATE_MVT, J.SHORTDESI
  2082.     INTO :MONTANT,:SENS,:LETTRAGE,:LIBELLE,:DATE_MVT,:NO_INTERNE,:NO_EXTERNE
  2083.     ,:CODEJ DO
  2084.     BEGIN
  2085.     IF (SENS='C') THEN
  2086.       BEGIN
  2087.       SOLDEP = SOLDEP - MONTANT;
  2088.       CREDIT = MONTANT;
  2089.       DEBIT = NULL;
  2090.       END
  2091.     ELSE
  2092.       BEGIN
  2093.       SOLDEP = SOLDEP + MONTANT;
  2094.       CREDIT=NULL;
  2095.       DEBIT = MONTANT;
  2096.       END
  2097.     SUSPEND;
  2098.     END
  2099.   END
  2100. end
  2101.  ;
  2102.  
  2103.  
  2104. ALTER PROCEDURE "IMPORT_COMPTE" 
  2105. (
  2106.   "LIB_COURT" VARCHAR(15),
  2107.   "LIB_LONG" VARCHAR(80),
  2108.   "CODEMAGASIN" VARCHAR(15),
  2109.   "REGROUPEMENT" VARCHAR(15),
  2110.   "VALEUR_TVA" VARCHAR(6)
  2111. )
  2112. AS
  2113. DECLARE VARIABLE "INDX" INTEGER;
  2114. DECLARE VARIABLE "INDX_TIERS"      INTEGER;       /* Client ou fournisseur */
  2115. DECLARE VARIABLE "INDX_REGROUPE"  INTEGER;       /* Compte principal: 411DUPONT est attachΘ α 411000 */
  2116. DECLARE VARIABLE "INDX_TVA"       INTEGER;
  2117. BEGIN
  2118.  
  2119. /* tiers */
  2120. IF (CODEMAGASIN<>'') THEN
  2121.   BEGIN
  2122.   SELECT MAX(INDX) FROM TIERS WHERE CODEMAGASIN=:CODEMAGASIN INTO :INDX_TIERS;
  2123.   IF (INDX_TIERS IS NULL) THEN /* INSERER */
  2124.     BEGIN
  2125.     SELECT GEN_ID("GENPK_TIERS",1) FROM RDB$DATABASE INTO :INDX_TIERS;
  2126.     INSERT INTO TIERS (INDX,CODEMAGASIN,NOM) VALUES (:INDX_TIERS,:CODEMAGASIN,'CREE PAR IMPORT_COMPTE');
  2127.     END
  2128.   END
  2129. ELSE INDX_TIERS = NULL;
  2130.  
  2131. /* AUXILLIAIRES */
  2132. IF (REGROUPEMENT<>'') THEN
  2133.   BEGIN
  2134.   SELECT MAX(INDX) FROM COMPTES WHERE LIB_COURT=:REGROUPEMENT INTO :INDX_REGROUPE;
  2135.   IF (INDX_REGROUPE IS NULL) THEN
  2136.     BEGIN
  2137.     SELECT GEN_ID("GENPK_COMPTES",1) FROM RDB$DATABASE INTO :INDX_REGROUPE;
  2138.     INSERT INTO COMPTES (INDX,LIB_COURT,LIB_LONG) VALUES (:INDX_REGROUPE,:REGROUPEMENT,'CREE PAR IMPORT_COMPTE '|| :LIB_COURT);
  2139.     END
  2140.   END
  2141. ELSE INDX_REGROUPE = NULL;
  2142.  
  2143. /* TVA */
  2144. IF (VALEUR_TVA<>'') THEN
  2145.   BEGIN
  2146.   SELECT MAX(INDX) FROM TVA WHERE VALEUR=:VALEUR_TVA INTO :INDX_TVA;
  2147.   IF (INDX_TVA IS NULL) THEN
  2148.     BEGIN
  2149.     SELECT GEN_ID("GENPK_TVA",1) FROM RDB$DATABASE INTO :INDX_TVA;
  2150.     INSERT INTO TVA (INDX,DESIGNATION,VALEUR) VALUES (:INDX_TVA,'CREE PAR IMPORT_COMPTE '|| :LIB_COURT,:VALEUR_TVA);
  2151.     END
  2152.   END
  2153. ELSE INDX_TVA = NULL;
  2154.  
  2155. /* LE COMPTE */
  2156. SELECT MAX(INDX) FROM COMPTES WHERE LIB_COURT=:LIB_COURT INTO :INDX;
  2157. IF (INDX IS NULL) THEN
  2158.   BEGIN
  2159.   SELECT GEN_ID("GENPK_COMPTES",1) FROM RDB$DATABASE INTO :INDX;
  2160.   INSERT INTO COMPTES (INDX,LIB_COURT,LIB_LONG,INDX_TIERS,REGROUPEMENT,INDX_TVA) VALUES (:INDX,:LIB_COURT,:LIB_LONG,:INDX_TIERS,:INDX_REGROUPE,:INDX_TVA);
  2161.   END
  2162. ELSE UPDATE COMPTES SET LIB_LONG=:LIB_LONG,INDX_TIERS=:INDX_TIERS,REGROUPEMENT=:INDX_REGROUPE,INDX_TVA=:INDX_TVA WHERE INDX=:INDX;
  2163.  
  2164.  
  2165. END
  2166.  ;
  2167.  
  2168.  
  2169. ALTER PROCEDURE "IMPORT_TVA" 
  2170. (
  2171.   "DESIGNATION" VARCHAR(40),
  2172.   "VALEUR" DECIMAL(4, 2)
  2173. )
  2174. AS
  2175. DECLARE VARIABLE INDX SMALLINT;
  2176. DECLARE VARIABLE OLD_DESIGNATION VARCHAR(40);
  2177. BEGIN
  2178.  
  2179. /* TVA */
  2180. SELECT INDX,DESIGNATION FROM TVA WHERE VALEUR=:VALEUR INTO :INDX,:OLD_DESIGNATION;
  2181. IF (INDX IS NULL) THEN
  2182.     BEGIN
  2183.     SELECT GEN_ID("GENPK_TVA",1) FROM RDB$DATABASE INTO :INDX;
  2184.     INSERT INTO TVA (INDX,DESIGNATION,VALEUR) VALUES (:INDX,:DESIGNATION,:VALEUR);
  2185.     END
  2186. ELSE IF ((OLD_DESIGNATION IS NULL) OR (OLD_DESIGNATION<>DESIGNATION)) THEN
  2187.   UPDATE TVA SET DESIGNATION=:DESIGNATION WHERE INDX=:INDX;
  2188. END
  2189.  ;
  2190.  
  2191.  
  2192. ALTER PROCEDURE "INTERROGATION" 
  2193. (
  2194.   "INDEX_EXERCICE" INTEGER,
  2195.   "DATEDEB" DATE,
  2196.   "DATEFIN" DATE,
  2197.   "DETAILS" SMALLINT
  2198. )
  2199. RETURNS
  2200. (
  2201.   "LIBJOURNAL" VARCHAR(4),
  2202.   "NO_INTERNE" VARCHAR(15),
  2203.   "DATE_MVT" DATE,
  2204.   "NO_EXTERNE" VARCHAR(15),
  2205.   "GENE" VARCHAR(15),
  2206.   "AUXI" VARCHAR(15),
  2207.   "LIBELLE" VARCHAR(80),
  2208.   "LETTRAGE" VARCHAR(4),
  2209.   "DEBIT" DECIMAL(12, 2),
  2210.   "CREDIT" DECIMAL(12, 2),
  2211.   "VERROU" SMALLINT,
  2212.   "MONTANT" DECIMAL(12, 2),
  2213.   "INDX_MVT" INTEGER,
  2214.   "NOLIGNE" SMALLINT,
  2215.   "LIB_CPT" VARCHAR(80),
  2216.   "INDX_JL" SMALLINT,
  2217.   "DATEPONT" DATE
  2218. )
  2219. AS
  2220. DECLARE VARIABLE SENS CHAR(1);
  2221. DECLARE VARIABLE LONGAUXI VARCHAR(80);
  2222. BEGIN
  2223. FOR SELECT L.MONTANT,L.SENS,L.LETTRAGE,L.LIBELLE,L.LIGNE,
  2224. M.INDX,M.DATE_MVT,M.NO_INTERNE,M.NO_EXTERNE,M.VERROU,M.DATE_PONT,
  2225. C.LIB_COURT,C1.LIB_COURT,C.LIB_LONG,C1.LIB_LONG,
  2226. J.SHORTDESI,J.INDX
  2227. from MOUVEMENTS M
  2228.     JOIN LIGNES L ON L.INDX_MVT=M.INDX AND ((:DETAILS=1) or (L.LIGNE=1))
  2229.     JOIN COMPTES C ON C.INDX=L.INDX_RGP
  2230.     JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
  2231.     JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL
  2232.     LEFT JOIN COMPTES C1 ON C1.INDX=L.INDX_CPT AND L.INDX_CPT<>L.INDX_RGP
  2233.     where M.INDX_EXERCICE=:INDEX_EXERCICE AND DATE_MVT>=:DATEDEB AND DATE_MVT<=:DATEFIN
  2234.     INTO :MONTANT,:SENS,:LETTRAGE,:LIBELLE,:NOLIGNE,
  2235.          :INDX_MVT,:DATE_MVT,:NO_INTERNE,:NO_EXTERNE,:VERROU,:DATEPONT,
  2236.          :GENE,:AUXI,:LIB_CPT,:LONGAUXI,:LIBJOURNAL,:indx_jl
  2237.          DO
  2238.   BEGIN
  2239.   IF (SENS='C') THEN
  2240.     BEGIN
  2241.     CREDIT = MONTANT;
  2242.     DEBIT = NULL;
  2243.     END
  2244.   ELSE
  2245.     BEGIN
  2246.     CREDIT=NULL;
  2247.     DEBIT = MONTANT;
  2248.     END
  2249.   IF (AUXI<>'') THEN LIB_CPT=LONGAUXI;
  2250.   SUSPEND;
  2251.   END
  2252. END
  2253.  ;
  2254.  
  2255.  
  2256. ALTER PROCEDURE "INTERROGATION_CPT" 
  2257. (
  2258.   "INDX" INTEGER,
  2259.   "INDX_EXERCICE" SMALLINT
  2260. )
  2261. RETURNS
  2262. (
  2263.   "CODEJ" VARCHAR(4),
  2264.   "DATE_MVT" DATE,
  2265.   "NO_INTERNE" VARCHAR(15),
  2266.   "NO_EXTERNE" VARCHAR(15),
  2267.   "AUXI" VARCHAR(15),
  2268.   "LIBELLE" VARCHAR(80),
  2269.   "LETTRAGE" VARCHAR(4),
  2270.   "DEBIT" DECIMAL(12, 2),
  2271.   "CREDIT" DECIMAL(12, 2),
  2272.   "VERROU" SMALLINT,
  2273.   "MONTANT" DECIMAL(12, 2),
  2274.   "INDX_MVT" INTEGER,
  2275.   "NOLIGNE" SMALLINT,
  2276.   "INDX_CPT" INTEGER
  2277. )
  2278. AS
  2279. DECLARE VARIABLE SENS CHAR(1);
  2280. BEGIN
  2281. FOR SELECT L.MONTANT,L.SENS,L.LETTRAGE,L.LIBELLE,L.INDX_MVT,L.LIGNE,L.INDX_CPT,
  2282.            M.DATE_MVT,M.NO_INTERNE,M.NO_EXTERNE,
  2283.            J.SHORTDESI,C.LIB_COURT,M.VERROU from lignes L
  2284.     JOIN MOUVEMENTS M ON M.INDX_EXERCICE=:INDX_EXERCICE AND M.INDX=L.INDX_MVT
  2285.     JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
  2286.     JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL
  2287.     LEFT JOIN COMPTES C ON C.INDX=L.INDX_CPT AND L.INDX_CPT<>L.INDX_RGP
  2288.     where (L.INDX_CPT=:INDX) or (L.INDX_RGP=:INDX)
  2289.     INTO :MONTANT,:SENS,:LETTRAGE,:LIBELLE,:INDX_MVT,:NOLIGNE,:INDX_CPT,
  2290.          :DATE_MVT,:NO_INTERNE,:NO_EXTERNE,:CODEJ,:AUXI,:VERROU DO
  2291.   BEGIN
  2292.   IF (SENS='C') THEN
  2293.     BEGIN
  2294.     CREDIT = MONTANT;
  2295.     DEBIT = NULL;
  2296.     END
  2297.   ELSE
  2298.     BEGIN
  2299.     CREDIT=NULL;
  2300.     DEBIT = MONTANT;
  2301.     END
  2302.   SUSPEND;
  2303.   END
  2304. END
  2305.  ;
  2306.  
  2307.  
  2308. ALTER PROCEDURE "INTERROGATION_JL" 
  2309. (
  2310.   "INDX_JM" INTEGER
  2311. )
  2312. RETURNS
  2313. (
  2314.   "NO_INTERNE" VARCHAR(15),
  2315.   "DATE_MVT" DATE,
  2316.   "NO_EXTERNE" VARCHAR(15),
  2317.   "GENE" VARCHAR(15),
  2318.   "AUXI" VARCHAR(15),
  2319.   "LIBELLE" VARCHAR(80),
  2320.   "LETTRAGE" VARCHAR(4),
  2321.   "DEBIT" DECIMAL(12, 2),
  2322.   "CREDIT" DECIMAL(12, 2),
  2323.   "VERROU" SMALLINT,
  2324.   "MONTANT" DECIMAL(12, 2),
  2325.   "INDX_MVT" INTEGER,
  2326.   "NOLIGNE" SMALLINT,
  2327.   "LIB_CPT" VARCHAR(80)
  2328. )
  2329. AS
  2330. DECLARE VARIABLE SENS CHAR(1);
  2331. DECLARE VARIABLE LONGAUXI VARCHAR(80);
  2332. BEGIN
  2333. FOR SELECT L.MONTANT,L.SENS,L.LETTRAGE,L.LIBELLE,L.INDX_MVT,L.LIGNE,
  2334. M.DATE_MVT,M.NO_INTERNE,M.NO_EXTERNE,M.VERROU,
  2335. C.LIB_COURT,C1.LIB_COURT,C.LIB_LONG,C1.LIB_LONG
  2336. from MOUVEMENTS M
  2337.     JOIN LIGNES L ON L.INDX_MVT=M.INDX
  2338.     JOIN COMPTES C ON C.INDX=L.INDX_RGP
  2339.     LEFT JOIN COMPTES C1 ON C1.INDX=L.INDX_CPT AND L.INDX_CPT<>L.INDX_RGP
  2340.     where M.INDX_JOURNAL_M=:INDX_JM
  2341.     INTO :MONTANT,:SENS,:LETTRAGE,:LIBELLE,:INDX_MVT,:NOLIGNE,
  2342.          :DATE_MVT,:NO_INTERNE,:NO_EXTERNE,:VERROU,
  2343.          :GENE,:AUXI,:LIB_CPT,:LONGAUXI DO
  2344.   BEGIN
  2345.   IF (SENS='C') THEN
  2346.     BEGIN
  2347.     CREDIT = MONTANT;
  2348.     DEBIT = NULL;
  2349.     END
  2350.   ELSE
  2351.     BEGIN
  2352.     CREDIT=NULL;
  2353.     DEBIT = MONTANT;
  2354.     END
  2355.   IF (AUXI<>'') THEN LIB_CPT=LONGAUXI;
  2356.   SUSPEND;
  2357.   END
  2358. END
  2359.  ;
  2360.  
  2361.  
  2362. ALTER PROCEDURE "INTERROGATION_LISTE" 
  2363. (
  2364.   "NOLISTE" INTEGER
  2365. )
  2366. RETURNS
  2367. (
  2368.   "LIBJOURNAL" VARCHAR(4),
  2369.   "NO_INTERNE" VARCHAR(15),
  2370.   "DATE_MVT" DATE,
  2371.   "NO_EXTERNE" VARCHAR(15),
  2372.   "GENE" VARCHAR(15),
  2373.   "AUXI" VARCHAR(15),
  2374.   "LIBELLE" VARCHAR(80),
  2375.   "LETTRAGE" VARCHAR(4),
  2376.   "DEBIT" DECIMAL(12, 2),
  2377.   "CREDIT" DECIMAL(12, 2),
  2378.   "VERROU" SMALLINT,
  2379.   "MONTANT" DECIMAL(12, 2),
  2380.   "INDX_MVT" INTEGER,
  2381.   "NOLIGNE" SMALLINT,
  2382.   "LIB_CPT" VARCHAR(80),
  2383.   "INDX_JL" SMALLINT,
  2384.   "DATEPONT" DATE
  2385. )
  2386. AS
  2387. DECLARE VARIABLE SENS CHAR(1);
  2388. DECLARE VARIABLE LONGAUXI VARCHAR(80);
  2389. BEGIN
  2390. FOR SELECT INDX,NOLIGNE FROM LISTE WHERE NOLISTE=:NOLISTE INTO :INDX_MVT,:NOLIGNE DO
  2391.   BEGIN
  2392.   FOR SELECT L.MONTANT,L.SENS,L.LETTRAGE,L.LIBELLE,
  2393.   M.DATE_MVT,M.NO_INTERNE,M.NO_EXTERNE,M.VERROU,M.DATE_PONT,
  2394.   C.LIB_COURT,C1.LIB_COURT,C.LIB_LONG,C1.LIB_LONG,
  2395.   J.SHORTDESI,J.INDX
  2396.   FROM LIGNES L
  2397.     JOIN MOUVEMENTS M ON M.INDX=:INDX_MVT
  2398.     JOIN COMPTES C ON C.INDX=L.INDX_RGP
  2399.     JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
  2400.     JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL
  2401.     LEFT JOIN COMPTES C1 ON C1.INDX=L.INDX_CPT AND L.INDX_CPT<>L.INDX_RGP
  2402.     where L.INDX_MVT=:INDX_MVT AND L.LIGNE=:NOLIGNE
  2403.     INTO :MONTANT,:SENS,:LETTRAGE,:LIBELLE,
  2404.          :DATE_MVT,:NO_INTERNE,:NO_EXTERNE,:VERROU,:DATEPONT,
  2405.          :GENE,:AUXI,:LIB_CPT,:LONGAUXI,:LIBJOURNAL,:indx_jl
  2406.          DO
  2407.     BEGIN
  2408.     IF (SENS='C') THEN
  2409.       BEGIN
  2410.       CREDIT = MONTANT;
  2411.       DEBIT = NULL;
  2412.       END
  2413.     ELSE
  2414.       BEGIN
  2415.       CREDIT=NULL;
  2416.       DEBIT = MONTANT;
  2417.       END
  2418.     IF (AUXI<>'') THEN LIB_CPT=LONGAUXI;
  2419.     SUSPEND;
  2420.     END
  2421.   END
  2422. END
  2423.  ;
  2424.  
  2425.  
  2426. ALTER PROCEDURE "INTERROGATION_MVT" 
  2427. (
  2428.   "INDX_MVT" INTEGER
  2429. )
  2430. RETURNS
  2431. (
  2432.   "NOLIGNE" SMALLINT,
  2433.   "DATE_MVT" DATE,
  2434.   "NO_INTERNE" VARCHAR(15),
  2435.   "NO_EXTERNE" VARCHAR(15),
  2436.   "GENE" VARCHAR(15),
  2437.   "AUXI" VARCHAR(15),
  2438.   "LIBELLE" VARCHAR(80),
  2439.   "LETTRAGE" VARCHAR(4),
  2440.   "DEBIT" DECIMAL(12, 2),
  2441.   "CREDIT" DECIMAL(12, 2),
  2442.   "VERROU" SMALLINT,
  2443.   "MONTANT" DECIMAL(12, 2)
  2444. )
  2445. AS
  2446. DECLARE VARIABLE SENS CHAR(1);
  2447. DECLARE VARIABLE LONGAUXI VARCHAR(80);
  2448. BEGIN
  2449. FOR SELECT L.MONTANT,L.SENS,L.LETTRAGE,L.LIBELLE,L.LIGNE,
  2450. M.DATE_MVT,M.NO_INTERNE,M.NO_EXTERNE,M.VERROU,
  2451. C.LIB_COURT,C1.LIB_COURT
  2452. from MOUVEMENTS M
  2453.     JOIN LIGNES L ON L.INDX_MVT=M.INDX
  2454.     JOIN COMPTES C ON C.INDX=L.INDX_RGP
  2455.     LEFT JOIN COMPTES C1 ON C1.INDX=L.INDX_CPT AND L.INDX_CPT<>L.INDX_RGP
  2456.     where M.INDX=:INDX_MVT
  2457.     INTO :MONTANT,:SENS,:LETTRAGE,:LIBELLE,:NOLIGNE,
  2458.          :DATE_MVT,:NO_INTERNE,:NO_EXTERNE,:VERROU,
  2459.          :GENE,:AUXI DO
  2460.   BEGIN
  2461.   IF (SENS='C') THEN
  2462.     BEGIN
  2463.     CREDIT = MONTANT;
  2464.     DEBIT = NULL;
  2465.     END
  2466.   ELSE
  2467.     BEGIN
  2468.     CREDIT=NULL;
  2469.     DEBIT = MONTANT;
  2470.     END
  2471.   SUSPEND;
  2472.   END
  2473. END
  2474.  ;
  2475.  
  2476.  
  2477. ALTER PROCEDURE "IS_EFF_MOUVEMENT_OK" 
  2478. (
  2479.   "INDEX_MVT" SMALLINT
  2480. )
  2481. RETURNS
  2482. (
  2483.   "EFF_OK" SMALLINT
  2484. )
  2485. AS
  2486. DECLARE VARIABLE N INTEGER;
  2487. BEGIN
  2488. SELECT VERROU FROM MOUVEMENTS WHERE INDX=:INDEX_MVT INTO :N;
  2489. IF (N<>0) THEN EFF_OK=0; ELSE EFF_OK=1;
  2490. SUSPEND;
  2491. END
  2492.  ;
  2493.  
  2494.  
  2495. ALTER PROCEDURE "LISTE_COMPTES" 
  2496. (
  2497.   "AVEC_TIERS" SMALLINT
  2498. )
  2499. RETURNS
  2500. (
  2501.   "INDX" INTEGER,
  2502.   "INDX_GENE" INTEGER,
  2503.   "INDX_AUXI" INTEGER,
  2504.   "COMPTE" VARCHAR(15),
  2505.   "TIERS" VARCHAR(15),
  2506.   "DESCRIPTION" VARCHAR(80)
  2507. )
  2508. AS
  2509. begin
  2510. FOR SELECT LIB_COURT,LIB_LONG,INDX FROM COMPTES
  2511. WHERE REGROUPEMENT IS NULL
  2512. ORDER BY LIB_COURT
  2513. INTO :COMPTE,:DESCRIPTION,:INDX_GENE DO
  2514.   BEGIN
  2515.   INDX = INDX_GENE;
  2516.   INDX_AUXI = NULL;
  2517.   TIERS = NULL;
  2518.   SUSPEND;
  2519.   if (AVEC_TIERS=1) then
  2520.     begin
  2521.     FOR SELECT LIB_COURT,LIB_LONG,INDX FROM COMPTES
  2522.     WHERE REGROUPEMENT=:INDX_GENE
  2523.     ORDER BY LIB_COURT
  2524.     INTO :TIERS,:DESCRIPTION,:INDX_AUXI DO
  2525.       begin
  2526.       indx = indx_auxi;
  2527.       SUSPEND;
  2528.       end
  2529.     END
  2530.   END
  2531. end
  2532.  ;
  2533.  
  2534.  
  2535. ALTER PROCEDURE "LISTE_JOURNAUX_MENSUELS" 
  2536. (
  2537.   "INDX_E" SMALLINT,
  2538.   "TYPE_LISTE" SMALLINT
  2539. )
  2540. RETURNS
  2541. (
  2542.   "INDX_JM" INTEGER,
  2543.   "MOIS" SMALLINT,
  2544.   "CODE_J" VARCHAR(4),
  2545.   "DESI" VARCHAR(80),
  2546.   "DATE_MODIF" DATE,
  2547.   "MONTANT" DECIMAL(12, 2),
  2548.   "DATE_PRN" DATE,
  2549.   "DATE_CLOTURE" DATE,
  2550.   "NBR" INTEGER,
  2551.   "NOMOIS" SMALLINT
  2552. )
  2553. AS
  2554. DECLARE VARIABLE ISOK SMALLINT;
  2555. DECLARE VARIABLE INDX_J INTEGER;
  2556. DECLARE VARIABLE INDX_JM1 INTEGER;
  2557. DECLARE VARIABLE N1 INTEGER;
  2558. begin
  2559. FOR SELECT JM.INDX,JM.MOIS,JM.NOMOIS,J.LONGDESI,J.SHORTDESI,J.INDX,
  2560.            JM.DATE_PRN,JM.DATE_CLOTURE,JM.NOMOIS FROM JOURNAL_MOIS JM
  2561.     LEFT JOIN JOURNAL J ON J.INDX=JM.INDX_JOURNAL
  2562.     WHERE INDX_EXERCICE=:INDX_E
  2563. /*    ORDER BY JM.NOMOIS */
  2564.     INTO :INDX_JM,:MOIS,:NOMOIS,:DESI,:CODE_J,:INDX_J,:DATE_PRN,:DATE_CLOTURE,:NOMOIS DO
  2565.   BEGIN
  2566.   SELECT COUNT(*) FROM MOUVEMENTS WHERE INDX_JOURNAL_M=:INDX_JM INTO :NBR;
  2567.   if (NBR>0) then SELECT MONTANT FROM GET_SOLDE_JOURNAL(:INDX_JM) INTO :MONTANT;
  2568.   ELSE MONTANT=NULL;
  2569.   SELECT MAX(DATE_MODIF) FROM MOUVEMENTS WHERE INDX_JOURNAL_M=:INDX_JM INTO :DATE_MODIF;
  2570.   ISOK=0;
  2571.   if ((TYPE_LISTE=0) or (NBR>0)) then ISOK=1;
  2572.   else IF (TYPE_LISTE=2) then
  2573.     BEGIN
  2574.     if (NOMOIS=0) then ISOK=1;
  2575.     else
  2576.       begin
  2577.       /* VΘrifier si l'avant dernier journal est vide */
  2578.       SELECT INDX FROM JOURNAL_MOIS
  2579.         WHERE INDX_EXERCICE=:INDX_E AND INDX_JOURNAL=:INDX_J AND NOMOIS=:NOMOIS-1
  2580.         INTO :INDX_JM1;
  2581.       SELECT COUNT(*) FROM MOUVEMENTS WHERE INDX_JOURNAL_M=:INDX_JM1 INTO :N1;
  2582.       if (N1>0) then ISOK=1;
  2583.       END
  2584.     END
  2585.   if (ISOK=1)  then SUSPEND;
  2586.   END
  2587. end
  2588.  ;
  2589.  
  2590.  
  2591. ALTER PROCEDURE "SET_IMPAIRE" 
  2592. (
  2593.   "NO_JOURNAL_MOIS" SMALLINT
  2594. )
  2595. AS
  2596. DECLARE VARIABLE I INTEGER;
  2597. DECLARE VARIABLE C1 SMALLINT;
  2598. DECLARE VARIABLE C2 SMALLINT;
  2599. BEGIN
  2600. C2=0;
  2601. FOR SELECT INDX,IMPAIRE FROM MOUVEMENTS WHERE INDX_JOURNAL_M=:NO_JOURNAL_MOIS ORDER BY DATE_MVT,INDX INTO :I,:C1 DO
  2602.   BEGIN
  2603.   IF ((C1 IS NULL) OR (C1<>C2)) THEN UPDATE MOUVEMENTS SET IMPAIRE=:C2 WHERE INDX=:I;
  2604.   IF (C2=0) THEN C2=1; ELSE C2=0;
  2605.   END
  2606. END
  2607.  ;
  2608.  
  2609.  
  2610. ALTER PROCEDURE "SOLDE_JM_COMPTE" 
  2611. (
  2612.   "INDEX_JM" SMALLINT
  2613. )
  2614. RETURNS
  2615. (
  2616.   "INDEX_COMPTE" INTEGER,
  2617.   "CREDIT" DECIMAL(12, 2),
  2618.   "DEBIT" DECIMAL(12, 2)
  2619. )
  2620. AS
  2621. DECLARE VARIABLE SOLDE_COMPTE1 DECIMAL(12,2);
  2622. DECLARE VARIABLE SOLDE_COMPTE DECIMAL(12,2);
  2623. DECLARE VARIABLE INDX_J INTEGER;
  2624. BEGIN
  2625. SELECT INDX_JOURNAL,SOLDE_COMPTE FROM JOURNAL_MOIS WHERE INDX=:INDEX_JM INTO :INDX_J,:SOLDE_COMPTE;
  2626. SELECT INDX_COMPTE FROM JOURNAL WHERE INDX=:INDX_J INTO :INDEX_COMPTE;
  2627.  
  2628. SELECT SUM(L.MONTANT) FROM MOUVEMENTS M
  2629. JOIN LIGNES L ON L.INDX_MVT=M.INDX AND L.SENS='C' AND INDX_RGP=:INDEX_COMPTE
  2630. WHERE M.INDX_JOURNAL_M=:INDEX_JM
  2631. INTO :CREDIT;
  2632.  
  2633. SELECT SUM(L.MONTANT) FROM MOUVEMENTS M
  2634. JOIN LIGNES L ON L.INDX_MVT=M.INDX AND L.SENS='D' AND INDX_RGP=:INDEX_COMPTE
  2635. WHERE M.INDX_JOURNAL_M=:INDEX_JM
  2636. INTO :DEBIT;
  2637.  
  2638. IF (:CREDIT IS NULL) THEN CREDIT=0;
  2639. IF (:DEBIT IS NULL) THEN DEBIT=0;
  2640. IF (SOLDE_COMPTE IS NULL) THEN SOLDE_COMPTE=0;
  2641. SOLDE_COMPTE1 = CREDIT - DEBIT;
  2642. IF (SOLDE_COMPTE<>SOLDE_COMPTE1) THEN UPDATE JOURNAL_MOIS SET SOLDE_COMPTE=:SOLDE_COMPTE1 WHERE INDX=:INDEX_JM;
  2643. SUSPEND;
  2644. END
  2645.  ;
  2646.  
  2647.  
  2648. ALTER PROCEDURE "UPDATE_DATE_CLOTURE_JM" 
  2649. (
  2650.   "INDX_JM" SMALLINT
  2651. )
  2652. AS
  2653. DECLARE VARIABLE NBR INTEGER;
  2654. DECLARE VARIABLE DATEC TIMESTAMP;
  2655. BEGIN
  2656. SELECT COUNT(*) FROM MOUVEMENTS WHERE VERROU=0 AND INDX_JOURNAL_M=:INDX_JM INTO :NBR;
  2657. SELECT DATE_CLOTURE FROM JOURNAL_MOIS WHERE INDX=:INDX_JM INTO DATEC;
  2658. IF ((NBR=0) AND (DATEC IS NULL)) THEN
  2659.   BEGIN
  2660.   UPDATE JOURNAL_MOIS SET DATE_CLOTURE='NOW' WHERE INDX=:INDX_JM;
  2661.   POST_EVENT 'RELISTER_CLOTURE';
  2662.   END
  2663. ELSE IF ((NBR>0) AND (DATEC IS NOT NULL)) THEN
  2664.   BEGIN
  2665.   UPDATE JOURNAL_MOIS SET DATE_CLOTURE=NULL WHERE INDX=:INDX_JM;
  2666.   POST_EVENT 'RELISTER_CLOTURE';
  2667.   END
  2668. END
  2669.  ;
  2670.  
  2671.  
  2672. ALTER PROCEDURE "VERROUILLE_JM" 
  2673. (
  2674.   "INDX_JM" INTEGER
  2675. )
  2676. AS
  2677. BEGIN
  2678. UPDATE MOUVEMENTS SET VERROU=1,DATE_CLOTURE='NOW' WHERE VERROU=0 AND INDX_JOURNAL_M=:INDX_JM;
  2679. UPDATE JOURNAL_MOIS SET DATE_CLOTURE='NOW' WHERE INDX=:INDX_JM;
  2680. EXIT;
  2681. END
  2682.  ;
  2683.  
  2684.  
  2685. ALTER PROCEDURE "VERROUILLE_MVT" 
  2686. (
  2687.   "INDX_MVT" INTEGER
  2688. )
  2689. AS
  2690. DECLARE VARIABLE NBR INTEGER;
  2691. DECLARE VARIABLE INDX_JM INTEGER;
  2692. BEGIN
  2693. SELECT COUNT(*) FROM MOUVEMENTS WHERE VERROU=0 AND INDX=:INDX_MVT INTO :NBR;
  2694. IF (NBR>0) THEN /* 1 normalement */
  2695.   BEGIN
  2696.   /* Verrouiller */
  2697.   UPDATE MOUVEMENTS SET VERROU=1,DATE_CLOTURE='NOW' WHERE INDX=:INDX_MVT;
  2698.   /* indiquer si le journal est verrouillΘ */
  2699.   SELECT INDX_JOURNAL_M FROM MOUVEMENTS WHERE INDX=:INDX_MVT INTO :INDX_JM;
  2700.   EXECUTE PROCEDURE UPDATE_DATE_CLOTURE_JM(:INDX_JM);
  2701.   END
  2702. EXIT;
  2703. END
  2704.  ;
  2705.  
  2706. COMMIT WORK;
  2707. SET AUTODDL ON;
  2708.  
  2709. /* Triggers only will work for SQL triggers */
  2710.  
  2711. CREATE TRIGGER "SETPK_BLOB" FOR "BLOBS" 
  2712. ACTIVE BEFORE INSERT POSITION 0
  2713. AS
  2714. BEGIN
  2715. IF (NEW."INDX" IS NULL) THEN
  2716. NEW."INDX" = GEN_ID(GENPK_BLOBS,1);
  2717. END
  2718.  ;
  2719.  
  2720. CREATE TRIGGER "BLOB_CHANGE" FOR "BLOBS" 
  2721. ACTIVE AFTER UPDATE POSITION 0
  2722. AS
  2723. BEGIN
  2724. IF (new.indx=1) THEN POST_EVENT 'MODIF_BLOB1';
  2725. END
  2726.  ;
  2727.  
  2728. CREATE TRIGGER "SETPK_COMPTES" FOR "COMPTES" 
  2729. ACTIVE BEFORE INSERT POSITION 0
  2730. AS
  2731. BEGIN
  2732. IF (NEW."INDX" IS NULL) THEN
  2733. NEW."INDX" = GEN_ID(GENPK_COMPTES,1);
  2734. END
  2735.  ;
  2736.  
  2737. CREATE TRIGGER "RELISTE_COMPTES2" FOR "COMPTES" 
  2738. ACTIVE AFTER INSERT POSITION 0
  2739. AS
  2740. BEGIN
  2741. POST_EVENT 'RELISTER_COMPTES';
  2742. END
  2743.  ;
  2744.  
  2745. CREATE TRIGGER "RELISTE_COMPTES3" FOR "COMPTES" 
  2746. ACTIVE AFTER UPDATE POSITION 0
  2747. AS
  2748. BEGIN
  2749. POST_EVENT 'RELISTER_COMPTES';
  2750. END
  2751.  ;
  2752.  
  2753. CREATE TRIGGER "RELISTE_COMPTES1" FOR "COMPTES" 
  2754. ACTIVE AFTER DELETE POSITION 0
  2755. AS
  2756. BEGIN
  2757. POST_EVENT 'RELISTER_COMPTES';
  2758. END
  2759.  ;
  2760.  
  2761. CREATE TRIGGER "SETPK_ETAT" FOR "ETATS" 
  2762. ACTIVE BEFORE INSERT POSITION 0
  2763. as
  2764.     begin
  2765.     if (new."INDX" IS NULL) THEN
  2766.     new."INDX" = GEN_ID(GENPK_ETATS,1);
  2767.     end
  2768.  ;
  2769.  
  2770. CREATE TRIGGER "RELISTE_ETATS2" FOR "ETATS" 
  2771. ACTIVE AFTER INSERT POSITION 0
  2772. AS
  2773. BEGIN
  2774. POST_EVENT 'RELISTER_FONCTIONS';
  2775. POST_EVENT 'RELISTER_ETATS';
  2776. END
  2777.  ;
  2778.  
  2779. CREATE TRIGGER "RELISTE_ETATS3" FOR "ETATS" 
  2780. ACTIVE AFTER UPDATE POSITION 0
  2781. AS
  2782. BEGIN
  2783. if (OLD.NOFONCTION<>NEW.NOFONCTION) then POST_EVENT 'RELISTER_FONCTIONS';
  2784. POST_EVENT 'RELISTER_ETATS';
  2785. END
  2786.  ;
  2787.  
  2788. CREATE TRIGGER "RELISTE_ETATS1" FOR "ETATS" 
  2789. ACTIVE AFTER DELETE POSITION 0
  2790. AS
  2791. BEGIN
  2792. POST_EVENT 'RELISTER_FONCTIONS';
  2793. POST_EVENT 'RELISTER_ETATS';
  2794. END
  2795.  ;
  2796.  
  2797. CREATE TRIGGER "RELISTE_EXERCICE2" FOR "EXERCICE" 
  2798. ACTIVE AFTER INSERT POSITION 0
  2799. AS
  2800. BEGIN
  2801. POST_EVENT 'RELISTER_EXERCICE';
  2802. END
  2803.  ;
  2804.  
  2805. CREATE TRIGGER "RELISTE_EXERCICE3" FOR "EXERCICE" 
  2806. ACTIVE AFTER UPDATE POSITION 0
  2807. AS
  2808. BEGIN
  2809. POST_EVENT 'RELISTER_EXERCICE';
  2810. END
  2811.  ;
  2812.  
  2813. CREATE TRIGGER "EFFACE_EXERCICE" FOR "EXERCICE" 
  2814. ACTIVE BEFORE DELETE POSITION 0
  2815. AS
  2816. BEGIN
  2817. DELETE FROM MOUVEMENTS WHERE INDX_EXERCICE=OLD.INDX;
  2818. DELETE FROM JOURNAL_MOIS WHERE INDX_EXERCICE=OLD.INDX;
  2819. END
  2820.  ;
  2821.  
  2822. CREATE TRIGGER "RELISTE_EXERCICE1" FOR "EXERCICE" 
  2823. ACTIVE AFTER DELETE POSITION 0
  2824. AS
  2825. BEGIN
  2826. POST_EVENT 'RELISTER_EXERCICE';
  2827. END
  2828.  ;
  2829.  
  2830. CREATE TRIGGER "SETPK_JOURNAL" FOR "JOURNAL" 
  2831. ACTIVE BEFORE INSERT POSITION 0
  2832. AS
  2833. BEGIN
  2834. IF (NEW."INDX" IS NULL) THEN
  2835. NEW."INDX" = GEN_ID(GENPK_JOURNAL,1);
  2836. END
  2837.  ;
  2838.  
  2839. CREATE TRIGGER "RELISTE_JX2" FOR "JOURNAL" 
  2840. ACTIVE AFTER INSERT POSITION 0
  2841. AS
  2842. BEGIN
  2843. POST_EVENT 'RELISTER_JOURNAUX';
  2844. END
  2845.  ;
  2846.  
  2847. CREATE TRIGGER "RELISTE_JX3" FOR "JOURNAL" 
  2848. ACTIVE AFTER UPDATE POSITION 0
  2849. AS
  2850. BEGIN
  2851. POST_EVENT 'RELISTER_JOURNAUX';
  2852. END
  2853.  ;
  2854.  
  2855. CREATE TRIGGER "EFFACE_JOURNAL" FOR "JOURNAL" 
  2856. ACTIVE BEFORE DELETE POSITION 0
  2857. AS
  2858. BEGIN
  2859. DELETE FROM JOURNAL_MOIS WHERE INDX_JOURNAL=OLD.INDX;
  2860. END
  2861.  ;
  2862.  
  2863. CREATE TRIGGER "RELISTE_JX1" FOR "JOURNAL" 
  2864. ACTIVE AFTER DELETE POSITION 0
  2865. AS
  2866. BEGIN
  2867. POST_EVENT 'RELISTER_JOURNAUX';
  2868. END
  2869.  ;
  2870.  
  2871. CREATE TRIGGER "RELISTER_JM2" FOR "JOURNAL_MOIS" 
  2872. ACTIVE AFTER INSERT POSITION 0
  2873. AS
  2874. begin
  2875. POST_EVENT 'RELISTER_JOURNAUX_MENSUELS';
  2876. end
  2877.  ;
  2878.  
  2879. CREATE TRIGGER "RELISTER_JM1" FOR "JOURNAL_MOIS" 
  2880. ACTIVE AFTER UPDATE POSITION 0
  2881. AS
  2882. begin
  2883. POST_EVENT 'RELISTER_JOURNAUX_MENSUELS';
  2884. end
  2885.  ;
  2886.  
  2887. CREATE TRIGGER "EFFACE_JOURNAL_MOIS" FOR "JOURNAL_MOIS" 
  2888. ACTIVE BEFORE DELETE POSITION 0
  2889. AS
  2890. BEGIN
  2891. DELETE FROM MOUVEMENTS WHERE INDX_JOURNAL_M=OLD.INDX;
  2892. END
  2893.  ;
  2894.  
  2895. CREATE TRIGGER "RELISTER_JM3" FOR "JOURNAL_MOIS" 
  2896. ACTIVE AFTER DELETE POSITION 0
  2897. AS
  2898. begin
  2899. POST_EVENT 'RELISTER_JOURNAUX_MENSUELS';
  2900. end
  2901.  ;
  2902.  
  2903. CREATE TRIGGER "LIGNES_BI0" FOR "LIGNES" 
  2904. ACTIVE BEFORE INSERT POSITION 0
  2905. AS
  2906. begin
  2907. if ((NEW.INDX_CPT IS NULL) or (new.INDX_CPT=0)) then NEW.INDX_CPT=NEW.INDX_RGP;
  2908. end
  2909.  ;
  2910.  
  2911. CREATE TRIGGER "LIGNES_BU0" FOR "LIGNES" 
  2912. ACTIVE BEFORE UPDATE POSITION 0
  2913. AS
  2914. declare variable v SMALLINT;
  2915. begin
  2916. SELECT VERROU FROM MOUVEMENTS WHERE INDX=OLD.INDX_MVT INTO :v;
  2917. if (v=1) then EXCEPTION MAJ_VERROU;
  2918. if ((NEW.INDX_CPT IS NULL) or (new.INDX_CPT=0)) then NEW.INDX_CPT=NEW.INDX_RGP;
  2919. end
  2920.  ;
  2921.  
  2922. CREATE TRIGGER "LIGNES_BD0" FOR "LIGNES" 
  2923. ACTIVE BEFORE DELETE POSITION 0
  2924. AS
  2925. declare variable v SMALLINT;
  2926. begin
  2927. SELECT VERROU FROM MOUVEMENTS WHERE INDX=OLD.INDX_MVT INTO :v;
  2928. if (v=1) then EXCEPTION DEL_VERROU;
  2929. end
  2930.  ;
  2931.  
  2932. CREATE TRIGGER "RELISTE_MODELES2" FOR "MODELES" 
  2933. ACTIVE AFTER INSERT POSITION 0
  2934. AS
  2935. BEGIN
  2936. POST_EVENT 'RELISTER_MODELES';
  2937. END
  2938.  ;
  2939.  
  2940. CREATE TRIGGER "RELISTE_MODELES3" FOR "MODELES" 
  2941. ACTIVE AFTER UPDATE POSITION 0
  2942. AS
  2943. BEGIN
  2944. POST_EVENT 'RELISTER_MODELES';
  2945. END
  2946.  ;
  2947.  
  2948. CREATE TRIGGER "RELISTE_MODELES1" FOR "MODELES" 
  2949. ACTIVE AFTER DELETE POSITION 0
  2950. AS
  2951. BEGIN
  2952. POST_EVENT 'RELISTER_MODELES';
  2953. END
  2954.  ;
  2955.  
  2956. CREATE TRIGGER "SETPK_MOUVEMENTS" FOR "MOUVEMENTS" 
  2957. ACTIVE BEFORE INSERT POSITION 0
  2958. AS
  2959. BEGIN
  2960. IF (NEW."INDX" IS NULL) THEN
  2961. NEW."INDX" = GEN_ID(GENPK_MOUVEMENTS,1);
  2962. END
  2963.  ;
  2964.  
  2965. CREATE TRIGGER "APRES_INSERT_MOUVEMENT" FOR "MOUVEMENTS" 
  2966. ACTIVE AFTER INSERT POSITION 0
  2967. AS
  2968. BEGIN
  2969. EXECUTE PROCEDURE UPDATE_DATE_CLOTURE_JM(NEW."INDX_JOURNAL_M");
  2970. END
  2971.  ;
  2972.  
  2973. CREATE TRIGGER "MOUVEMENTS_BU0" FOR "MOUVEMENTS" 
  2974. ACTIVE BEFORE UPDATE POSITION 0
  2975. AS
  2976. begin
  2977. if (OLD.VERROU=1) then EXCEPTION MAJ_VERROU;
  2978. end
  2979.  ;
  2980.  
  2981. CREATE TRIGGER "EFFACE_MOUVEMENT" FOR "MOUVEMENTS" 
  2982. ACTIVE BEFORE DELETE POSITION 0
  2983. AS
  2984. BEGIN
  2985. if (OLD.VERROU=1) then EXCEPTION DEL_VERROU;
  2986. DELETE FROM LIGNES WHERE INDX_MVT=OLD.INDX;
  2987. END
  2988.  ;
  2989.  
  2990. CREATE TRIGGER "APRES_EFFACE_MOUVEMENT" FOR "MOUVEMENTS" 
  2991. ACTIVE AFTER DELETE POSITION 0
  2992. AS
  2993. BEGIN
  2994. EXECUTE PROCEDURE UPDATE_DATE_CLOTURE_JM(OLD.INDX_JOURNAL_M);
  2995. END
  2996.  ;
  2997.  
  2998. CREATE TRIGGER "SETPK_TIERS" FOR "TIERS" 
  2999. ACTIVE BEFORE INSERT POSITION 0
  3000. as
  3001.     begin
  3002.     if (new."INDX" IS NULL) THEN
  3003.     new."INDX" = GEN_ID(GENPK_TIERS,1);
  3004.     end
  3005.  ;
  3006.  
  3007. CREATE TRIGGER "SET_DATEMODIF" FOR "TIERS" 
  3008. ACTIVE BEFORE UPDATE POSITION 0
  3009. as
  3010.     begin
  3011.     new."DATEMODIF" = 'NOW';
  3012.     end
  3013.  ;
  3014.  
  3015. CREATE TRIGGER "RELISTE_TVA2" FOR "TVA" 
  3016. ACTIVE AFTER INSERT POSITION 0
  3017. AS
  3018. BEGIN
  3019. POST_EVENT 'RELISTER_TVA';
  3020. END
  3021.  ;
  3022.  
  3023. CREATE TRIGGER "RELISTE_TVA3" FOR "TVA" 
  3024. ACTIVE AFTER UPDATE POSITION 0
  3025. AS
  3026. BEGIN
  3027. POST_EVENT 'RELISTER_TVA';
  3028. END
  3029.  ;
  3030.  
  3031. CREATE TRIGGER "RELISTE_TVA1" FOR "TVA" 
  3032. ACTIVE AFTER DELETE POSITION 0
  3033. AS
  3034. BEGIN
  3035. POST_EVENT 'RELISTER_TVA';
  3036. END
  3037.  ;
  3038.  
  3039. COMMIT WORK ;
  3040.  
  3041. /* Grant Roles for this database */
  3042.  
  3043.  
  3044. /* Grant permissions for this database */
  3045.  
  3046.